o
    ۾i                     @   s|   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r<e  dS 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 d    n1 s#w   Y  W d    n1 s2w   Y  | |d jt | d	t	|d j
 | d
t	|d j
 d S )Nc                   S      d S N r   r   r   X/home/ubuntu/.local/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_warning.pykernel      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   s   t jdd }tdd# tjdd}|d   W d    n1 s#w   Y  W d    n1 s2w   Y  | t|d d S )	Nc                   S   r
   r   r   r   r   r   r   r      r   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' tjdd}|d|f || W d    n1 s1w   Y  W d    n1 s@w   Y  | |d	 j	t
 | d
t|d	 j | dt|d	 j d S )Nc                 S      |d | d< d S Nr   r   r   rxr   r   r   foo$      z1TestWarnings.test_warn_on_host_array.<locals>.foo
   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(   N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' tjdd}|d|f || W d    n1 s1w   Y  W d    n1 s@w   Y  | |d	 j	t
 | d
t|d	 j | dt|d	 j d S )Nc                 S   r#   r$   r   r%   r   r   r   r(   4   r)   z8TestWarnings.test_pinned_warn_on_host_array.<locals>.foor*   r+   r-   r   Tr   r   r.   r/   )r   r   pinned_arrayr0   r2   r   r   r   r   r   r   r   r   r   r   r(   r3   aryr   r   r   r   test_pinned_warn_on_host_array3   s   
z+TestWarnings.test_pinned_warn_on_host_arrayc              	   C      t jdd }d}t j|tjd}tdd' tjdd}|d|f || W d    n1 s1w   Y  W d    n1 s@w   Y  | t	|d	 d S )
Nc                 S   r#   r$   r   r%   r   r   r   r(   E   r)   z5TestWarnings.test_nowarn_on_mapped_array.<locals>.foor*   r+   r-   r   Tr   r   )
r   r   mapped_arrayr0   r2   r   r   r   r   r!   r7   r   r   r   test_nowarn_on_mapped_arrayD      
z(TestWarnings.test_nowarn_on_mapped_arrayc              	   C   r:   )
Nc                 S   r#   r$   r   r%   r   r   r   r(   T   r)   z6TestWarnings.test_nowarn_on_managed_array.<locals>.foor*   r+   r-   r   Tr   r   )
r   r   managed_arrayr0   r2   r   r   r   r   r!   r7   r   r   r   test_nowarn_on_managed_arrayR   s   
z)TestWarnings.test_nowarn_on_managed_arrayc              	   C   r:   )
Nc                 S   r#   r$   r   r%   r   r   r   r(   b   r)   z5TestWarnings.test_nowarn_on_device_array.<locals>.foor*   r+   r-   r   Tr   r   )
r   r   device_arrayr0   r2   r   r   r   r   r!   r7   r   r   r   test_nowarn_on_device_arraya   r=   z(TestWarnings.test_nowarn_on_device_arrayc                 C   sd   t jdd}tjddd W d    n1 sw   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w   Y  | t|d | dt|d j d S )NTr   )rC   r   rE   r   rF   rG   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 sw   Y  | t|d d S )NTr   FrB   r   r   r   r   r   r   r!   rG   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w   Y  | t|d d S )NTr   r   rJ   rG   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"   r5   r9   r<   r   r?   rA   rH   rI   rK   rL   r   r   r   r   r	   	   s    
r	   __main__)numpyr0   numbar   numba.cuda.testingr   r   r   numba.tests.supportr   r   numba.core.errorsr   r   r	   rM   mainr   r   r   r   <module>   s     