§
    1@Äj4  ã                   ó¾   — 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        ¦   «          dS dS )
é    N)Úcuda)ÚunittestÚCUDATestCaseÚskip_on_cudasim)Ú
linux_onlyÚoverride_config)ÚNumbaPerformanceWarningz+cudasim does not raise performance warningsc                   ó`   — 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dS )ÚTestWarningsc                 óþ  — t           j        d„ ¦   «         }t          dd¦  «        5  t          j        d¬¦  «        5 } |d         ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      |d         j        t          ¦  «         |                      dt          |d         j
        ¦  «        ¦  «         |                      d	t          |d         j
        ¦  «        ¦  «         d S )
Nc                  ó   — d S ©N© r   ó    úUC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/test_warning.pyÚkernelzBTestWarnings.test_inefficient_launch_configuration.<locals>.kernel   ó   € àˆDr   Ú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   sc  € Ý	Œð	ð 	ñ 
Œð	õ Ð:¸AÑ>Ô>ð 	ð 	ÝÔ(°Ð5Ñ5Ô5ð ¸Ø��t”‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò˜˜1œœÕ(?Ñ@Ô@Ð@Ø�Š�k¥3 q¨¤t¤|Ñ#4Ô#4Ñ5Ô5Ð5Ø�Š�o¥s¨1¨Q¬4¬<Ñ'8Ô'8Ñ9Ô9Ð9Ð9Ð9ó4   ¦A0¼AÁA0ÁA	ÁA0Á A	Á!A0Á0A4Á7A4c                 ó@  — t           j        d„ ¦   «         }t          dd¦  «        5  t          j        d¬¦  «        5 } |d         ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d S )Nc                  ó   — d S 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   s"  € Ý	Œð	ð 	ñ 
Œð	õ Ð:¸AÑ>Ô>ð 	#ð 	#ÝÔ(°Ð5Ñ5Ô5ð #¸Ø ��xÔ Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#r$   c                 óJ  — t           j        d„ ¦   «         }d}t          j        |t          j        ¬¦  «        }t          dd¦  «        5  t          j        d¬¦  «        5 } |d|f         ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      |d         j	        t          ¦  «         |                      d	t          |d         j        ¦  «        ¦  «         |                      d
t          |d         j        ¦  «        ¦  «         d S )Nc                 ó   — |dz   | d<   d S ©Nr   r   r   ©ÚrÚxs     r   Úfooz1TestWarnings.test_warn_on_host_array.<locals>.foo$   ó   € à�q‘5ˆAˆa‰DˆDˆDr   é
   ©Ú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!   r0   ÚNÚarr_f32r"   s        r   Útest_warn_on_host_arrayz$TestWarnings.test_warn_on_host_array#   s‘  € Ý	Œð	ð 	ñ 
Œð	ð ˆÝ”(˜1¥B¤JÐ/Ñ/Ô/ˆÝÐ9¸1Ñ=Ô=ð 	&ð 	&ÝÔ(°Ð5Ñ5Ô5ð &¸Ø��A�q�D”	˜' 1Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	×Ò˜˜1œœÕ(?Ñ@Ô@Ð@Ø�ŠÐAÝ˜!˜Aœ$œ,Ñ'Ô'ñ	)ô 	)ð 	)à�Š�o¥s¨1¨Q¬4¬<Ñ'8Ô'8Ñ9Ô9Ð9Ð9Ð9ó6   ÁBÁA?Á3BÁ?B	ÂBÂB	ÂBÂBÂBc                 óJ  — t           j        d„ ¦   «         }d}t          j        |t          j        ¬¦  «        }t          dd¦  «        5  t          j        d¬¦  «        5 } |d|f         ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      |d         j	        t          ¦  «         |                      d	t          |d         j        ¦  «        ¦  «         |                      d
t          |d         j        ¦  «        ¦  «         d S )Nc                 ó   — |dz   | d<   d S r,   r   r-   s     r   r0   z8TestWarnings.test_pinned_warn_on_host_array.<locals>.foo4   r1   r   r2   r3   r5   r   Tr   r   r6   r7   )r   r   Úpinned_arrayr8   r:   r   r   r   r   r   r	   r   r   r   ©r!   r0   r;   Úaryr"   s        r   Útest_pinned_warn_on_host_arrayz+TestWarnings.test_pinned_warn_on_host_array3   s’  € Ý	Œð	ð 	ñ 
Œð	ð ˆÝÔ ­¬Ð4Ñ4Ô4ˆåÐ9¸1Ñ=Ô=ð 	"ð 	"ÝÔ(°Ð5Ñ5Ô5ð "¸Ø��A�q�D”	˜#˜qÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×Ò˜˜1œœÕ(?Ñ@Ô@Ð@Ø�ŠÐAÝ˜!˜Aœ$œ,Ñ'Ô'ñ	)ô 	)ð 	)à�Š�o¥s¨1¨Q¬4¬<Ñ'8Ô'8Ñ9Ô9Ð9Ð9Ð9r>   c                 óŒ  — t           j        d„ ¦   «         }d}t          j        |t          j        ¬¦  «        }t          dd¦  «        5  t          j        d¬¦  «        5 } |d|f         ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d S )	Nc                 ó   — |dz   | d<   d S r,   r   r-   s     r   r0   z5TestWarnings.test_nowarn_on_mapped_array.<locals>.fooE   r1   r   r2   r3   r5   r   Tr   r   )
r   r   Úmapped_arrayr8   r:   r   r   r   r   r(   rB   s        r   Útest_nowarn_on_mapped_arrayz(TestWarnings.test_nowarn_on_mapped_arrayD   óE  € Ý	Œð	ð 	ñ 
Œð	ð ˆÝÔ ­¬Ð4Ñ4Ô4ˆåÐ9¸1Ñ=Ô=ð 	"ð 	"ÝÔ(°Ð5Ñ5Ô5ð "¸Ø��A�q�D”	˜#˜qÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#r>   c                 óŒ  — t           j        d„ ¦   «         }d}t          j        |t          j        ¬¦  «        }t          dd¦  «        5  t          j        d¬¦  «        5 } |d|f         ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d S )	Nc                 ó   — |dz   | d<   d S r,   r   r-   s     r   r0   z6TestWarnings.test_nowarn_on_managed_array.<locals>.fooT   r1   r   r2   r3   r5   r   Tr   r   )
r   r   Úmanaged_arrayr8   r:   r   r   r   r   r(   rB   s        r   Útest_nowarn_on_managed_arrayz)TestWarnings.test_nowarn_on_managed_arrayR   sE  € å	Œð	ð 	ñ 
Œð	ð ˆÝÔ  ­"¬*Ð5Ñ5Ô5ˆåÐ9¸1Ñ=Ô=ð 	"ð 	"ÝÔ(°Ð5Ñ5Ô5ð "¸Ø��A�q�D”	˜#˜qÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#r>   c                 óŒ  — t           j        d„ ¦   «         }d}t          j        |t          j        ¬¦  «        }t          dd¦  «        5  t          j        d¬¦  «        5 } |d|f         ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d S )	Nc                 ó   — |dz   | d<   d S r,   r   r-   s     r   r0   z5TestWarnings.test_nowarn_on_device_array.<locals>.foob   r1   r   r2   r3   r5   r   Tr   r   )
r   r   Údevice_arrayr8   r:   r   r   r   r   r(   rB   s        r   Útest_nowarn_on_device_arrayz(TestWarnings.test_nowarn_on_device_arraya   rI   r>   c                 ó.  — t          j        d¬¦  «        5 }t          j        dd¬¦  «         d d d ¦  «         n# 1 swxY 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"   s     r   Útest_warn_on_debug_and_optz'TestWarnings.test_warn_on_debug_and_opto   sÄ   € ÝÔ$¨DÐ1Ñ1Ô1ð 	+°QÝŒH˜4 TÐ*Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ø�ŠÐ-­s°1°Q´4´<Ñ/@Ô/@ÑAÔAÐAÐAÐAó   –9¹=Á =c                 ó,  — t          j        d¬¦  «        5 }t          j        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         |                      dt          |d         j        ¦  «        ¦  «         d S )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Ð1Ñ1Ô1ð 	!°QÝŒH˜4Ð Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ø�ŠÐ-­s°1°Q´4´<Ñ/@Ô/@ÑAÔAÐAÐAÐAs   –8¸<¿<c                 óÒ   — t          j        d¬¦  «        5 }t          j        dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d S )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}   s¡   € ÝÔ$¨DÐ1Ñ1Ô1ð 	,°QÝŒH˜4 UÐ+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#rZ   c                 óÌ   — t          j        d¬¦  «        5 }t          j        ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      t          |¦  «        d¦  «         d S )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Ð1Ñ1Ô1ð 	°QÝŒH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#s   –6¶:½:N)Ú__name__Ú
__module__Ú__qualname__r#   r)   r=   rD   rH   r   rM   rQ   rY   r\   r_   ra   r   r   r   r   r   	   sË   € € € € € ð:ð :ð :ð	$ð 	$ð 	$ð:ð :ð :ð :ð :ð :ð"$ð $ð $ð ð$ð $ñ „Zð$ð$ð $ð $ðBð Bð BðBð Bð Bð$ð $ð $ð$ð $ð $ð $ð $r   r   Ú__main__)Únumpyr8   Únumbar   Únumba.cuda.testingr   r   r   Únumba.tests.supportr   r   Únumba.core.errorsr	   r   r   rb   Úmainr   r   r   ú<module>rl      sæ   ðØ Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø €€€ð €Ð>Ñ?Ô?ð}$ð }$ð }$ð }$ð }$�<ñ }$ô }$ñ @Ô?ð}$ð@ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   