
    xKg                         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e             Zed	k(  r ej                           yy)
    N)cuda)unittestCUDATestCaseskip_on_cudasim)
linux_onlyoverride_config)NumbaPerformanceWarningz+cudasim does not raise performance warningsc                   X    e Zd Zd Zd Zd Zd Zd Zed        Z	d Z
d Zd	 Zd
 Zd Zy)TestWarningsc                    t         j                  d        }t        dd      5  t        j                  d      5 } |d           d d d        d d d        | j                  d   j                  t               | j                  dt        |d   j                               | j                  d	t        |d   j                               y # 1 sw Y   xY w# 1 sw Y   xY w)
Nc                       y N r       h/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_warning.pykernelzBTestWarnings.test_inefficient_launch_configuration.<locals>.kernel       r   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   ws      r   %test_inefficient_launch_configurationz2TestWarnings.test_inefficient_launch_configuration   s    		 
	 :A>((5t 6 ? 	1(?@k3qt||#45os1Q4<<'89 65 ?>s"   CC	C	C	CCc                    t         j                  d        }t        dd      5  t        j                  d      5 } |d           d d d        d d d        | j                  t              d       y # 1 sw Y   -xY w# 1 sw Y   1xY w)Nc                       y r   r   r   r   r   r   z@TestWarnings.test_efficient_launch_configuration.<locals>.kernel   r   r   r   r   Tr   )   r&   r   )r   r   r   r   r   r   lenr    s      r   #test_efficient_launch_configurationz0TestWarnings.test_efficient_launch_configuration   st    		 
	 :A>((5 x " 6 ? 	Q# 65 ?>s"   A=A1A=1A:	6A==Bc                    t         j                  d        }d}t        j                  |t        j                        }t        dd      5  t        j                  d      5 } |d|f   ||       d d d        d d d        | j                  d   j                  t               | j                  d	t        |d   j                               | j                  d
t        |d   j                               y # 1 sw Y   xY w# 1 sw Y   xY w)Nc                     |dz   | d<   y Nr   r   r   rxs     r   fooz1TestWarnings.test_warn_on_host_array.<locals>.foo$       q5AaDr   
   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"   s        r   test_warn_on_host_arrayz$TestWarnings.test_warn_on_host_array#   s    		 
	 ((1BJJ/91=((5AqD	'1% 6 > 	1(?@A!A$,,'	)os1Q4<<'89 65 >=$   
D !C40D 4C=	9D  D	c                    t         j                  d        }d}t        j                  |t        j                        }t        dd      5  t        j                  d      5 } |d|f   ||       d d d        d d d        | j                  d   j                  t               | j                  d	t        |d   j                               | j                  d
t        |d   j                               y # 1 sw Y   xY w# 1 sw Y   xY w)Nc                     |dz   | d<   y r+   r   r,   s     r   r/   z8TestWarnings.test_pinned_warn_on_host_array.<locals>.foo4   r0   r   r1   r2   r4   r   Tr   r   r5   r6   )r   r   pinned_arrayr7   r9   r   r   r   r   r   r	   r   r   r   r!   r/   r:   aryr"   s        r   test_pinned_warn_on_host_arrayz+TestWarnings.test_pinned_warn_on_host_array3   s    		 
	 491=((5AqD	#q! 6 > 	1(?@A!A$,,'	)os1Q4<<'89 65 >=r=   c                 h   t         j                  d        }d}t        j                  |t        j                        }t        dd      5  t        j                  d      5 } |d|f   ||       d d d        d d d        | j                  t              d       y # 1 sw Y   -xY w# 1 sw Y   1xY w)	Nc                     |dz   | d<   y r+   r   r,   s     r   r/   z5TestWarnings.test_nowarn_on_mapped_array.<locals>.fooE   r0   r   r1   r2   r4   r   Tr   r   )
r   r   mapped_arrayr7   r9   r   r   r   r   r'   rA   s        r   test_nowarn_on_mapped_arrayz(TestWarnings.test_nowarn_on_mapped_arrayD       		 
	 491=((5AqD	#q! 6 > 	Q# 65 >=$   
B(!B0B(B%	!B((B1c                 h   t         j                  d        }d}t        j                  |t        j                        }t        dd      5  t        j                  d      5 } |d|f   ||       d d d        d d d        | j                  t              d       y # 1 sw Y   -xY w# 1 sw Y   1xY w)	Nc                     |dz   | d<   y r+   r   r,   s     r   r/   z6TestWarnings.test_nowarn_on_managed_array.<locals>.fooT   r0   r   r1   r2   r4   r   Tr   r   )
r   r   managed_arrayr7   r9   r   r   r   r   r'   rA   s        r   test_nowarn_on_managed_arrayz)TestWarnings.test_nowarn_on_managed_arrayR   s    		 
	   "**591=((5AqD	#q! 6 > 	Q# 65 >=rI   c                 h   t         j                  d        }d}t        j                  |t        j                        }t        dd      5  t        j                  d      5 } |d|f   ||       d d d        d d d        | j                  t              d       y # 1 sw Y   -xY w# 1 sw Y   1xY w)	Nc                     |dz   | d<   y r+   r   r,   s     r   r/   z5TestWarnings.test_nowarn_on_device_array.<locals>.foob   r0   r   r1   r2   r4   r   Tr   r   )
r   r   device_arrayr7   r9   r   r   r   r   r'   rA   s        r   test_nowarn_on_device_arrayz(TestWarnings.test_nowarn_on_device_arraya   rH   rI   c                    t        j                  d      5 }t        j                  dd       d d d        | j	                  t              d       | j                  dt        |d   j                               y # 1 sw Y   MxY w)NTr   debugoptr   not supported by CUDAr   	r   r   r   r   r   r'   r   r   r   r!   r"   s     r   test_warn_on_debug_and_optz'TestWarnings.test_warn_on_debug_and_opto   s`    $$D1QHH4T* 2 	Q#-s1Q4<</@A	 21s   A;;Bc                    t        j                  d      5 }t        j                  d       d d d        | j	                  t              d       | j                  dt        |d   j                               y # 1 sw Y   MxY w)NTr   )rT   r   rV   r   rW   rX   s     r   "test_warn_on_debug_and_opt_defaultz/TestWarnings.test_warn_on_debug_and_opt_defaultv   s^    $$D1QHH4  2 	Q#-s1Q4<</@A	 21s   A::Bc                     t        j                  d      5 }t        j                  dd       d d d        | j	                  t              d       y # 1 sw Y   %xY w)NTr   FrS   r   r   r   r   r   r   r'   rX   s     r    test_no_warn_on_debug_and_no_optz-TestWarnings.test_no_warn_on_debug_and_no_opt}   sD    $$D1QHH4U+ 2 	Q# 21s   AAc                     t        j                  d      5 }t        j                          d d d        | j	                  t              d       y # 1 sw Y   %xY w)NTr   r   r]   rX   s     r   )test_no_warn_with_no_debug_and_opt_kwargsz6TestWarnings.test_no_warn_with_no_debug_and_opt_kwargs   s?    $$D1QHHJ 2 	Q# 21s   AAN)__name__
__module____qualname__r#   r(   r<   rC   rG   r   rM   rQ   rY   r[   r^   r`   r   r   r   r   r   	   sJ    :	$: :"$ $ $$BB$$r   r   __main__)numpyr7   numbar   numba.cuda.testingr   r   r   numba.tests.supportr   r   numba.core.errorsr	   r   r   ra   mainr   r   r   <module>rk      sZ      F F ; 5  >?}$< }$ @}$@ zHMMO r   