U
    hâËdÊ  ã                   @   s  d dl mZmZ d dlmZ d dlmZmZmZ d dl	Z
dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Z d'Z!d(Z"d)Z#d*Z$eed+d,�d-d.„ ƒZ%eed/d,�d0d1„ ƒZ&eed+d,�d2d3„ ƒZ'eed/d,�d4d5„ ƒZ(eed+d,�d6d7„ ƒZ)eed+d,�d8d9„ ƒZ*eed/d,�d:d;„ ƒZ+eed/d,�d<d=„ ƒZ,eed+d,�d>d?„ ƒZ-eed/d,�d@dA„ ƒZ.eed+d,�dBdC„ ƒZ/eed/d,�dDdE„ ƒZ0eed+d,�dFdG„ ƒZ1eed/d,�dHdI„ ƒZ2edJƒG dKdL„ dLeƒƒZ3e4dMk�re 5¡  dS )Né    )ÚcudaÚnjit)Úoverload)ÚCUDATestCaseÚskip_on_cudasimÚunittestNc                   C   s   d S ©N© r	   r	   r	   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_overload.pyÚgeneric_func_1
   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úcuda_func_1   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úgeneric_func_2   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úcuda_func_2   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úgeneric_calls_generic   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úgeneric_calls_cuda   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úcuda_calls_generic"   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úcuda_calls_cuda&   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Útarget_overloaded*   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úgeneric_calls_target_overloaded.   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Úcuda_calls_target_overloaded2   s    r   c                   C   s   d S r   r	   r	   r	   r	   r
   Ú)target_overloaded_calls_target_overloaded6   s    r   é   é   é   é   é   é   é   é   é   é   é   é%   é)   é+   Zgeneric)Útargetc                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < d S ©Nr   )ÚGENERIC_FUNCTION_1©Úxr	   r	   r
   ÚimplS   s    zol_generic_func_1.<locals>.implr	   ©r)   r*   r	   r	   r
   Úol_generic_func_1Q   s    r,   r   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < d S r&   )ÚCUDA_FUNCTION_1r(   r	   r	   r
   r*   Z   s    zol_cuda_func_1.<locals>.implr	   r+   r	   r	   r
   Úol_cuda_func_1X   s    r.   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < d S r&   )ÚGENERIC_FUNCTION_2r(   r	   r	   r
   r*   a   s    zol_generic_func_2.<locals>.implr	   r+   r	   r	   r
   Úol_generic_func_2_   s    r0   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < d S r&   )ÚCUDA_FUNCTION_2r(   r	   r	   r
   r*   h   s    zol_cuda_func.<locals>.implr	   r+   r	   r	   r
   Úol_cuda_funcf   s    r2   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚGENERIC_CALLS_GENERICr   r(   r	   r	   r
   r*   o   s    z&ol_generic_calls_generic.<locals>.implr	   r+   r	   r	   r
   Úol_generic_calls_genericm   s    r4   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚGENERIC_CALLS_CUDAr   r(   r	   r	   r
   r*   w   s    z#ol_generic_calls_cuda.<locals>.implr	   r+   r	   r	   r
   Úol_generic_calls_cudau   s    r6   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚCUDA_CALLS_GENERICr   r(   r	   r	   r
   r*      s    z#ol_cuda_calls_generic.<locals>.implr	   r+   r	   r	   r
   Úol_cuda_calls_generic}   s    r8   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚCUDA_CALLS_CUDAr   r(   r	   r	   r
   r*   ‡   s    z ol_cuda_calls_cuda.<locals>.implr	   r+   r	   r	   r
   Úol_cuda_calls_cuda…   s    r:   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < d S r&   )ÚGENERIC_TARGET_OLr(   r	   r	   r
   r*   �   s    z*ol_target_overloaded_generic.<locals>.implr	   r+   r	   r	   r
   Úol_target_overloaded_generic�   s    r<   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < d S r&   )ÚCUDA_TARGET_OLr(   r	   r	   r
   r*   –   s    z'ol_target_overloaded_cuda.<locals>.implr	   r+   r	   r	   r
   Úol_target_overloaded_cuda”   s    r>   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚGENERIC_CALLS_TARGET_OLr   r(   r	   r	   r
   r*   �   s    z0ol_generic_calls_target_overloaded.<locals>.implr	   r+   r	   r	   r
   Ú"ol_generic_calls_target_overloaded›   s    r@   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚCUDA_CALLS_TARGET_OLr   r(   r	   r	   r
   r*   ¥   s    z-ol_cuda_calls_target_overloaded.<locals>.implr	   r+   r	   r	   r
   Úol_cuda_calls_target_overloaded£   s    rB   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )Ú!GENERIC_TARGET_OL_CALLS_TARGET_OLr   r(   r	   r	   r
   r*   ­   s    z8ol_generic_calls_target_overloaded_generic.<locals>.implr	   r+   r	   r	   r
   Ú*ol_generic_calls_target_overloaded_generic«   s    rD   c                 C   s   dd„ }|S )Nc                 S   s   | d  t 9  < t| ƒ d S r&   )ÚCUDA_TARGET_OL_CALLS_TARGET_OLr   r(   r	   r	   r
   r*   µ   s    z5ol_generic_calls_target_overloaded_cuda.<locals>.implr	   r+   r	   r	   r
   Ú'ol_generic_calls_target_overloaded_cuda³   s    rF   z$Overloading not supported in cudasimc                   @   s„   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestOverloadc                 C   s6   t jdt jd�}t |¡d |ƒ |  |d |¡ d S )Né   ©Zdtype)rH   rH   r   )ÚnpÚonesÚint32r   ZjitÚassertEqual©ÚselfÚkernelÚexpectedr)   r	   r	   r
   Úcheck_overload½   s    zTestOverload.check_overloadc                 C   s0   t jdt jd�}t|ƒ|ƒ |  |d |¡ d S )NrH   rI   r   )rJ   rK   rL   r   rM   rN   r	   r	   r
   Úcheck_overload_cpuÂ   s    zTestOverload.check_overload_cpuc                 C   s   dd„ }t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP   È   s    z)TestOverload.test_generic.<locals>.kernel)r'   rR   ©rO   rP   rQ   r	   r	   r
   Útest_genericÇ   s    zTestOverload.test_genericc                 C   s   dd„ }t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP   Ï   s    z&TestOverload.test_cuda.<locals>.kernel)r-   rR   rT   r	   r	   r
   Ú	test_cudaÎ   s    zTestOverload.test_cudac                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ t| ƒ d S r   )r   r   r(   r	   r	   r
   rP   Ö   s    z2TestOverload.test_generic_and_cuda.<locals>.kernel)r'   r-   rR   rT   r	   r	   r
   Útest_generic_and_cudaÕ   s    z"TestOverload.test_generic_and_cudac                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ t| ƒ d S r   )r   r   r(   r	   r	   r
   rP   Þ   s    z8TestOverload.test_call_two_generic_calls.<locals>.kernel)r'   r/   rR   rT   r	   r	   r
   Útest_call_two_generic_callsÝ   s    z(TestOverload.test_call_two_generic_callsc                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ t| ƒ d S r   )r   r   r(   r	   r	   r
   rP   æ   s    z5TestOverload.test_call_two_cuda_calls.<locals>.kernel)r-   r1   rR   rT   r	   r	   r
   Útest_call_two_cuda_callså   s    z%TestOverload.test_call_two_cuda_callsc                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP   î   s    z7TestOverload.test_generic_calls_generic.<locals>.kernel)r3   r'   rR   rT   r	   r	   r
   Útest_generic_calls_genericí   s    z'TestOverload.test_generic_calls_genericc                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP   õ   s    z4TestOverload.test_generic_calls_cuda.<locals>.kernel)r5   r-   rR   rT   r	   r	   r
   Útest_generic_calls_cudaô   s    z$TestOverload.test_generic_calls_cudac                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP   ü   s    z4TestOverload.test_cuda_calls_generic.<locals>.kernel)r7   r'   rR   rT   r	   r	   r
   Útest_cuda_calls_genericû   s    z$TestOverload.test_cuda_calls_genericc                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP     s    z1TestOverload.test_cuda_calls_cuda.<locals>.kernel)r9   r-   rR   rT   r	   r	   r
   Útest_cuda_calls_cuda  s    z!TestOverload.test_cuda_calls_cudac                 C   s   dd„ }t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP   
  s    z8TestOverload.test_call_target_overloaded.<locals>.kernel)r=   rR   rT   r	   r	   r
   Útest_call_target_overloaded	  s    z(TestOverload.test_call_target_overloadedc                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP     s    zATestOverload.test_generic_calls_target_overloaded.<locals>.kernel)r?   r=   rR   rT   r	   r	   r
   Ú$test_generic_calls_target_overloaded  s    z1TestOverload.test_generic_calls_target_overloadedc                 C   s    dd„ }t t }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP     s    z>TestOverload.test_cuda_calls_target_overloaded.<locals>.kernel)rA   r=   rR   rT   r	   r	   r
   Ú!test_cuda_calls_target_overloaded  s    z.TestOverload.test_cuda_calls_target_overloadedc                 C   s4   dd„ }t t }|  ||¡ tt }|  ||¡ d S )Nc                 S   s   t | ƒ d S r   )r   r(   r	   r	   r
   rP     s    zKTestOverload.test_target_overloaded_calls_target_overloaded.<locals>.kernel)rE   r=   rR   rC   r;   rS   rT   r	   r	   r
   Ú.test_target_overloaded_calls_target_overloaded  s
    z;TestOverload.test_target_overloaded_calls_target_overloadedN)Ú__name__Ú
__module__Ú__qualname__rR   rS   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r	   r	   r	   r
   rG   »   s   rG   Ú__main__)6Znumbar   r   Znumba.core.extendingr   Znumba.cuda.testingr   r   r   ÚnumpyrJ   r   r   r   r   r   r   r   r   r   r   r   r   r'   r-   r/   r1   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   r,   r.   r0   r2   r4   r6   r8   r:   r<   r>   r@   rB   rD   rF   rG   rb   Úmainr	   r	   r	   r
   Ú<module>   sz   	



























o
