U
    9%e                     @   sx   d dl Zd dlmZ d dlmZmZm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rte  dS )
    N)cuda)unittestCUDATestCaseskip_on_cudasim)
linux_onlyoverride_config)NumbaPerformanceWarningz+cudasim does not raise performance warningsc                   @   sh   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zedd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestWarningsc              
   C   s   t jdd }tdd( tjdd}|d   W 5 Q R X W 5 Q R X | |d jt | d	t	|d j
 | d
t	|d j
 d S )Nc                   S   s   d S N r   r   r   c/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_warning.pykernel   s    zBTestWarnings.test_inefficient_launch_configuration.<locals>.kernelCUDA_LOW_OCCUPANCY_WARNINGS   Trecord)r   r   r   z	Grid sizezlow occupancy)r   jitr   warningscatch_warningsassertEqualcategoryr   assertInstrmessageselfr   wr   r   r   %test_inefficient_launch_configuration   s    
z2TestWarnings.test_inefficient_launch_configurationc              
   C   sZ   t jdd }tdd( tjdd}|d   W 5 Q R X W 5 Q R X | t|d d S )	Nc                   S   s   d S r
   r   r   r   r   r   r      s    z@TestWarnings.test_efficient_launch_configuration.<locals>.kernelr   r   Tr   )   r   r   )r   r   r   r   r   r   lenr   r   r   r   #test_efficient_launch_configuration   s    
z0TestWarnings.test_efficient_launch_configurationc              
   C   s   t jdd }d}tj|tjd}tdd0 tjdd}|d|f || W 5 Q R X W 5 Q R X | |d	 j	t
 | d
t|d	 j | dt|d	 j d S )Nc                 S   s   |d | d< d S Nr   r   r   rxr   r   r   foo$   s    z1TestWarnings.test_warn_on_host_array.<locals>.foo
   ZdtypeCUDA_WARN_ON_IMPLICIT_COPYr   Tr   r   )Host array used in CUDA kernel will incurcopy overhead)r   r   npZzerosfloat32r   r   r   r   r   r   r   r   r   )r   r%   NZarr_f32r   r   r   r   test_warn_on_host_array#   s    
&z$TestWarnings.test_warn_on_host_arrayc              
   C   s   t jdd }d}t j|tjd}tdd0 tjdd}|d|f || W 5 Q R X W 5 Q R X | |d	 j	t
 | d
t|d	 j | dt|d	 j d S )Nc                 S   s   |d | d< d S r!   r   r"   r   r   r   r%   4   s    z8TestWarnings.test_pinned_warn_on_host_array.<locals>.foor&   r'   r(   r   Tr   r   r)   r*   )r   r   Zpinned_arrayr+   r,   r   r   r   r   r   r   r   r   r   r   r%   r-   Zaryr   r   r   r   test_pinned_warn_on_host_array3   s    
&z+TestWarnings.test_pinned_warn_on_host_arrayc              
   C   sv   t jdd }d}t j|tjd}tdd0 tjdd}|d|f || W 5 Q R X W 5 Q R X | t	|d	 d S )
Nc                 S   s   |d | d< d S r!   r   r"   r   r   r   r%   E   s    z5TestWarnings.test_nowarn_on_mapped_array.<locals>.foor&   r'   r(   r   Tr   r   )
r   r   Zmapped_arrayr+   r,   r   r   r   r   r   r/   r   r   r   test_nowarn_on_mapped_arrayD   s    
&z(TestWarnings.test_nowarn_on_mapped_arrayc              
   C   sv   t jdd }d}t j|tjd}tdd0 tjdd}|d|f || W 5 Q R X W 5 Q R X | t	|d	 d S )
Nc                 S   s   |d | d< d S r!   r   r"   r   r   r   r%   T   s    z6TestWarnings.test_nowarn_on_managed_array.<locals>.foor&   r'   r(   r   Tr   r   )
r   r   Zmanaged_arrayr+   r,   r   r   r   r   r   r/   r   r   r   test_nowarn_on_managed_arrayR   s    
&z)TestWarnings.test_nowarn_on_managed_arrayc              
   C   sv   t jdd }d}t j|tjd}tdd0 tjdd}|d|f || W 5 Q R X W 5 Q R X | t	|d	 d S )
Nc                 S   s   |d | d< d S r!   r   r"   r   r   r   r%   b   s    z5TestWarnings.test_nowarn_on_device_array.<locals>.foor&   r'   r(   r   Tr   r   )
r   r   Zdevice_arrayr+   r,   r   r   r   r   r   r/   r   r   r   test_nowarn_on_device_arraya   s    
&z(TestWarnings.test_nowarn_on_device_arrayc              	   C   sP   t jdd}tjddd W 5 Q R X | t|d | dt|d j d S )NTr   debugoptr   not supported by CUDAr   	r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_warn_on_debug_and_opto   s    z'TestWarnings.test_warn_on_debug_and_optc              	   C   sN   t jdd}tjdd W 5 Q R X | t|d | dt|d j d S )NTr   )r5   r   r7   r   r8   r9   r   r   r   "test_warn_on_debug_and_opt_defaultv   s    z/TestWarnings.test_warn_on_debug_and_opt_defaultc              	   C   s:   t jdd}tjddd W 5 Q R X | t|d d S )NTr   Fr4   r   r   r   r   r   r   r   r9   r   r   r    test_no_warn_on_debug_and_no_opt}   s    z-TestWarnings.test_no_warn_on_debug_and_no_optc              	   C   s4   t jdd}t  W 5 Q R X | t|d d S )NTr   r   r<   r9   r   r   r   )test_no_warn_with_no_debug_and_opt_kwargs   s    z6TestWarnings.test_no_warn_with_no_debug_and_opt_kwargsN)__name__
__module____qualname__r   r    r.   r0   r1   r   r2   r3   r:   r;   r=   r>   r   r   r   r   r	   	   s   
r	   __main__)numpyr+   Znumbar   Znumba.cuda.testingr   r   r   Znumba.tests.supportr   r   Znumba.core.errorsr   r   r	   r?   mainr   r   r   r   <module>   s    