a
    
d                     @   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F tjdd}|d   W d    n1 sF0    Y  W d    n1 sd0    Y  | |d jt | d	t	|d j
 | d
t	|d j
 d S )Nc                   S   s   d S N r   r   r   m/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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    
Fz2TestWarnings.test_inefficient_launch_configurationc              	   C   s   t jdd }tddF tjdd}|d   W d    n1 sF0    Y  W d    n1 sd0    Y  | 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    
Fz0TestWarnings.test_efficient_launch_configurationc              	   C   s   t jdd }d}tj|tjd}tddN tjdd"}|d|f || W d    n1 sb0    Y  W d    n1 s0    Y  | |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   npzerosfloat32r   r   r   r   r   r   r   r   r   )r   r%   NZarr_f32r   r   r   r   test_warn_on_host_array#   s    
Nz$TestWarnings.test_warn_on_host_arrayc              	   C   s   t jdd }d}t j|tjd}tddN tjdd"}|d|f || W d    n1 sb0    Y  W d    n1 s0    Y  | |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    
Nz+TestWarnings.test_pinned_warn_on_host_arrayc              	   C   s   t jdd }d}t j|tjd}tddN tjdd"}|d|f || W d    n1 sb0    Y  W d    n1 s0    Y  | 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   r0   r   r   r   test_nowarn_on_mapped_arrayD   s    
Nz(TestWarnings.test_nowarn_on_mapped_arrayc              	   C   s   t jdd }d}t j|tjd}tddN tjdd"}|d|f || W d    n1 sb0    Y  W d    n1 s0    Y  | 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   r0   r   r   r   test_nowarn_on_managed_arrayR   s    
Nz)TestWarnings.test_nowarn_on_managed_arrayc              	   C   s   t jdd }d}t j|tjd}tddN tjdd"}|d|f || W d    n1 sb0    Y  W d    n1 s0    Y  | 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   r0   r   r   r   test_nowarn_on_device_arraya   s    
Nz(TestWarnings.test_nowarn_on_device_arrayc                 C   sd   t jdd}tjddd W d    n1 s00    Y  | 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   sb   t jdd}tjdd W d    n1 s.0    Y  | t|d | dt|d j d S )NTr   )r6   r   r8   r   r9   r:   r   r   r   "test_warn_on_debug_and_opt_defaultv   s    *z/TestWarnings.test_warn_on_debug_and_opt_defaultc                 C   sN   t jdd}tjddd W d    n1 s00    Y  | t|d d S )NTr   Fr5   r   r   r   r   r   r   r   r:   r   r   r    test_no_warn_on_debug_and_no_opt}   s    ,z-TestWarnings.test_no_warn_on_debug_and_no_optc                 C   sH   t jdd}t  W d    n1 s*0    Y  | t|d d S )NTr   r   r=   r:   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/   r1   r2   r   r3   r4   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    