§
    ƒÛgãg  ã                   ó8  — d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZ d dlZd„ Zd„ Z ed¦  «         G d„ d	e¦  «        ¦   «         Z G d
„ de¦  «        Z ed¦  «         G d„ de¦  «        ¦   «         Zedk    r ej        ¦   «          dS dS )é    N)ÚbooleanÚconfigÚcudaÚfloat32Úfloat64Úint32Úint64Úvoid)ÚTypingError)Úskip_on_cudasimÚunittestÚCUDATestCasec                 ó   — | |z   S ©N© ©ÚxÚys     ú]/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_dispatcher.pyÚaddr   
   s   € Øˆq‰5€Ló    c                 ó   — ||z   | d<   d S ©Nr   r   )Úrr   r   s      r   Ú
add_kernelr      s   € Øˆq‰5€A€a�D€D€Dr   z/Specialization not implemented in the simulatorc                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestDispatcherSpecializationc                 óä   — |                       t          ¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt	          |j        ¦  «        ¦  «         d S )NzDispatcher already specialized)ÚassertRaisesÚRuntimeErrorÚ
specializeÚassertInÚstrÚ	exception)ÚselfÚ
dispatcherÚtyÚes       r   Ú_test_no_double_specializez7TestDispatcherSpecialization._test_no_double_specialize   s£   € à×Ò�|Ñ,Ô,ð 	&°Ø×!Ò! "Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	�ŠÐ6½¸A¼KÑ8HÔ8HÑIÔIÐIÐIÐIs   ›=½AÁAc                 óˆ   — t          j        d¦  «        d„ ¦   «         }|                      |t          d d d…         ¦  «         d S )Nzvoid(float32[::1])c                 ó   — d S r   r   ©r   s    r   ÚfzPTestDispatcherSpecialization.test_no_double_specialize_sig_same_types.<locals>.f   ó   € àˆDr   é   ©r   Újitr)   r   ©r%   r-   s     r   Ú(test_no_double_specialize_sig_same_typeszETestDispatcherSpecialization.test_no_double_specialize_sig_same_types   sQ   € õ 
ŒÐ&Ñ	'Ô	'ð	ð 	ñ 
(Ô	'ð	ð 	×'Ò'¨­7°3°3°Q°3¬<Ñ8Ô8Ð8Ð8Ð8r   c                 ó¾   — t           j        d„ ¦   «         }|                     t          d d d…         ¦  «        }|                      |t          d d d…         ¦  «         d S )Nc                 ó   — d S r   r   r,   s    r   r-   zSTestDispatcherSpecialization.test_no_double_specialize_no_sig_same_types.<locals>.f'   r.   r   r/   )r   r1   r!   r   r)   ©r%   r-   Úf_specializeds      r   Ú+test_no_double_specialize_no_sig_same_typeszHTestDispatcherSpecialization.test_no_double_specialize_no_sig_same_types$   sb   € õ 
Œð	ð 	ñ 
Œð	ð Ÿš¥W¨S¨S¨q¨S¤\Ñ2Ô2ˆØ×'Ò'¨µw¸s¸sÀ¸s´|ÑDÔDÐDÐDÐDr   c                 óˆ   — t          j        d¦  «        d„ ¦   «         }|                      |t          d d d…         ¦  «         d S )Nzvoid(int32[::1])c                 ó   — d S r   r   r,   s    r   r-   zPTestDispatcherSpecialization.test_no_double_specialize_sig_diff_types.<locals>.f0   r.   r   r/   r0   r2   s     r   Ú(test_no_double_specialize_sig_diff_typeszETestDispatcherSpecialization.test_no_double_specialize_sig_diff_types.   sO   € å	ŒÐ$Ñ	%Ô	%ð	ð 	ñ 
&Ô	%ð	ð 	×'Ò'¨­7°3°3°Q°3¬<Ñ8Ô8Ð8Ð8Ð8r   c                 ó¾   — t           j        d„ ¦   «         }|                     t          d d d…         ¦  «        }|                      |t
          d d d…         ¦  «         d S )Nc                 ó   — d S r   r   r,   s    r   r-   zSTestDispatcherSpecialization.test_no_double_specialize_no_sig_diff_types.<locals>.f8   r.   r   r/   )r   r1   r!   r   r)   r   r6   s      r   Ú+test_no_double_specialize_no_sig_diff_typeszHTestDispatcherSpecialization.test_no_double_specialize_no_sig_diff_types6   s`   € å	Œð	ð 	ñ 
Œð	ð Ÿš¥U¨3¨3¨Q¨3¤ZÑ0Ô0ˆØ×'Ò'¨µw¸s¸sÀ¸s´|ÑDÔDÐDÐDÐDr   c                 óš  — t           j        d„ ¦   «         }|                      t          |j        ¦  «        d¦  «         |                     t          d d d…         ¦  «        }|                      t          |j        ¦  «        d¦  «         |                     t          d d d…         ¦  «        }|                      t          |j        ¦  «        d¦  «         |                      ||¦  «         |                     t          d d d…         ¦  «        }|                      t          |j        ¦  «        d¦  «         |  	                    ||¦  «         d S )Nc                 ó   — d S r   r   r,   s    r   r-   zBTestDispatcherSpecialization.test_specialize_cache_same.<locals>.fC   r.   r   r   r/   é   )
r   r1   ÚassertEqualÚlenÚspecializationsr!   r   ÚassertIsr   ÚassertIsNot)r%   r-   Ú	f_float32Úf_float32_2Úf_int32s        r   Útest_specialize_cache_samez7TestDispatcherSpecialization.test_specialize_cache_same?   s&  € õ 
Œð	ð 	ñ 
Œð	ð 	×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3à—L’L¥¨¨¨1¨¤Ñ.Ô.ˆ	Ø×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3à—l’l¥7¨3¨3¨Q¨3¤<Ñ0Ô0ˆØ×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3Ø�Š�i Ñ-Ô-Ð-à—,’,�u S S q SœzÑ*Ô*ˆØ×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3Ø×Ò˜ )Ñ,Ô,Ð,Ð,Ð,r   c                 óð  — t           j        d„ ¦   «         }|                      t          |j        ¦  «        d¦  «         |                     t          d d …         t          d d …         ¦  «        }|                      t          |j        ¦  «        d¦  «         |                     t          d d d…         t          d d d…         ¦  «        }|                      t          |j        ¦  «        d¦  «         |                      ||¦  «         |                     t          d d d…         t          d d d…         ¦  «        }|                      t          |j        ¦  «        d¦  «         |                      ||¦  «         d S )Nc                 ó   — d S r   r   r   s     r   r-   zPTestDispatcherSpecialization.test_specialize_cache_same_with_ordering.<locals>.fY   r.   r   r   r/   rA   )	r   r1   rB   rC   rD   r!   r   rF   rE   )r%   r-   Úf_f32a_f32aÚf_f32c_f32cÚf_f32c_f32c_2s        r   Ú(test_specialize_cache_same_with_orderingzETestDispatcherSpecialization.test_specialize_cache_same_with_orderingT   sL  € õ
 
Œð	ð 	ñ 
Œð	ð 	×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3ð —l’l¥7¨1¨1¨1¤:­w°q°q°q¬zÑ:Ô:ˆØ×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3ð —l’l¥7¨3¨3¨Q¨3¤<µ¸¸¸1¸´Ñ>Ô>ˆØ×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3Ø×Ò˜ kÑ2Ô2Ð2ð Ÿš¥W¨S¨S¨q¨S¤\µ7¸3¸3¸Q¸3´<Ñ@Ô@ˆØ×Ò�˜QÔ.Ñ/Ô/°Ñ3Ô3Ð3Ø�Š�k =Ñ1Ô1Ð1Ð1Ð1r   N)
Ú__name__Ú
__module__Ú__qualname__r)   r3   r8   r;   r>   rJ   rP   r   r   r   r   r      s†   € € € € € ðJð Jð Jð9ð 9ð 9ðEð Eð Eð9ð 9ð 9ðEð Eð Eð-ð -ð -ð*2ð 2ð 2ð 2ð 2r   r   c                   ó¦  — e Zd ZdZd„ Z ed¦  «        ej        d„ ¦   «         ¦   «         Z ed¦  «        d„ ¦   «         Z	 ed¦  «        d„ ¦   «         Z
 ed¦  «        d	„ ¦   «         Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z ed¦  «        d„ ¦   «         Z ed¦  «        ej        d„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Z ed¦  «        d„ ¦   «         Zd„ ZdS )ÚTestDispatcherz9Most tests based on those in numba.tests.test_dispatcher.c                 ó^  — t          j        t          ¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         t          dd¦  «        ¦  «          |d         |dd¦  «         |                      |d         t          dd¦  «        ¦  «          |d         |dd	¦  «         |                      |d         t          dd	¦  «        ¦  «          |d         |d
d¦  «         |                      |d         t          d
d¦  «        ¦  «          t          j        d¦  «        t          ¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |  	                    |d         t          dd¦  «        ¦  «         d S )Nr/   ©Údtype©r/   r/   é{   iÈ  r   çš™™™™™(@çÍÌÌÌÌÌF@ù        ÍÌÌÌÌÌF@l    F: ú(i4[::1], i4, i4))
r   r1   r   ÚnpÚzerosÚ
complex128rB   r   r   ÚassertPreciseEqual©r%   Úc_addr   s      r   Útest_coerce_input_typesz&TestDispatcher.test_coerce_input_typesq   s‰  € õ ”�Ñ$Ô$ˆõ ŒH�Q�bœmÐ,Ñ,Ô,ˆàˆˆdŒ�A�s˜CÑ Ô Ð Ø×Ò˜˜1œ�s 3¨™}œ}Ñ-Ô-Ð-àˆˆdŒ�A�t˜TÑ"Ô"Ð"Ø×Ò˜˜1œ�s 4¨™œÑ/Ô/Ð/àˆˆdŒ�A�t˜UÑ#Ô#Ð#Ø×Ò˜˜1œ�s 4¨Ñ/Ô/Ñ0Ô0Ð0àˆˆdŒ�A�{ CÑ(Ô(Ð(Ø×Ò˜˜1œ�s ;°Ñ4Ô4Ñ5Ô5Ð5ð .•”Ð,Ñ-Ô-­jÑ9Ô9ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆàˆˆdŒ�A�s˜CÑ Ô Ð Ø×Ò  !¤¥c¨#¨s¡m¤mÑ4Ô4Ð4Ð4Ð4r   zSimulator ignores signaturec                 ó  —  t          j        d¦  «        t          ¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         t          dd	¦  «        ¦  «         d S )
Nr^   r/   rW   rY   r[   r\   r   é   é-   )r   r1   r   r_   r`   r   rb   r   rc   s      r   Útest_coerce_input_types_unsafez-TestDispatcher.test_coerce_input_types_unsafe�   st   € ð .•”Ð,Ñ-Ô-­jÑ9Ô9ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆàˆˆdŒ�A�t˜TÑ"Ô"Ð"Ø×Ò  !¤¥c¨"¨b¡k¤kÑ2Ô2Ð2Ð2Ð2r   c                 ó  —  t          j        d¦  «        t          ¦  «        }t          j        dt          j        ¬¦  «        }|                      t          ¦  «        5   |d         |dd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr^   r/   rW   rY   r[   r]   )r   r1   r   r_   r`   r   r   Ú	TypeErrorrc   s      r   Ú&test_coerce_input_types_unsafe_complexz5TestDispatcher.test_coerce_input_types_unsafe_complexž   sÄ   € ð .•”Ð,Ñ-Ô-­jÑ9Ô9ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆà×Ò�yÑ)Ô)ð 	(ð 	(ØˆE�$ŒK˜˜4 Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ÁA>Á>BÂBz"Simulator does not track overloadsc                 óR  — t          j        t          ¦  «        }t          j        dt          j        ¬¦  «        }d}d} |d         |||¦  «         |                      |d         ||z   ¦  «         |                      t          |j	        ¦  «        d¦  «          |d         |||¦  «         |                      |d         ||z   ¦  «         |                      t          |j	        ¦  «        d¦  «          |d         |||¦  «         |                      |d         ||z   ¦  «         |                      t          |j	        ¦  «        d¦  «          |d         |dd¦  «         |                      |d         ||z   ¦  «         |                      t          |j	        ¦  «        dd	¦  «         d
S )z8Test compiling new version in an ambiguous case
        r/   rW   ç      ø?rY   r   rA   é   é   zdidn't compile a new versionN)
r   r1   r   r_   r`   r   ÚassertAlmostEqualrB   rC   Ú	overloads)r%   rd   r   ÚINTÚFLTs        r   Útest_ambiguous_new_versionz)TestDispatcher.test_ambiguous_new_version§   s¢  € õ ”�Ñ$Ô$ˆåŒH�Q�bœjÐ)Ñ)Ô)ˆØˆØˆàˆˆdŒ�A�s˜CÑ Ô Ð Ø×Ò˜q œt S¨3¡YÑ/Ô/Ð/Ø×Ò�˜Uœ_Ñ-Ô-¨qÑ1Ô1Ð1àˆˆdŒ�A�s˜CÑ Ô Ð Ø×Ò˜q œt S¨3¡YÑ/Ô/Ð/Ø×Ò�˜Uœ_Ñ-Ô-¨qÑ1Ô1Ð1àˆˆdŒ�A�s˜CÑ Ô Ð Ø×Ò˜q œt S¨3¡YÑ/Ô/Ð/Ø×Ò�˜Uœ_Ñ-Ô-¨qÑ1Ô1Ð1ð 	ˆˆdŒ�A�q˜!ÑÔÐØ×Ò˜q œt S¨3¡YÑ/Ô/Ð/Ø×Ò�˜Uœ_Ñ-Ô-¨qð 3<ñ 	=ô 	=ð 	=ð 	=ð 	=r   z,Simulator doesn't support concurrent kernelsc                 ó  ‡ ‡‡‡— g Št           j        d„ ¦   «         Šˆˆˆ fd„Šˆfd„t          d¦  «        D ¦   «         }|D ]}|                     ¦   «          Œ|D ]}|                     ¦   «          Œ‰                      ‰¦  «         dS )zz
        Test that (lazy) compiling from several threads at once doesn't
        produce errors (see issue #908).
        c                 ó   — |dz   | d<   d S )Nr/   r   r   )r   r   s     r   Úfooz%TestDispatcher.test_lock.<locals>.fooÌ   s   € à�q‘5ˆAˆa‰DˆDˆDr   c                  ó   •— 	 t          j        dt           j        ¬¦  «        }  ‰d         | d¦  «         ‰                     | d         d¦  «         d S # t          $ r }‰                     |¦  «         Y d }~d S d }~ww xY w)Nr/   rW   rY   r   rA   )r_   r`   r	   rB   Ú	ExceptionÚappend)r   r(   Úerrorsrx   r%   s     €€€r   Úwrapperz)TestDispatcher.test_lock.<locals>.wrapperÐ   s”   ø€ ð!Ý”H˜Q¥b¤hÐ/Ñ/Ô/�Ø��D”	˜!˜Q‘”�Ø× Ò   1¤ qÑ)Ô)Ð)Ð)Ð)øÝð !ð !ð !Ø—’˜aÑ Ô Ð Ð Ð Ð Ð Ð Ð øøøøð!øøøs   ƒAA Á
A=ÁA8Á8A=c                 ó:   •— g | ]}t          j        ‰¬ ¦  «        ‘ŒS ))Útarget)Ú	threadingÚThread)Ú.0Úir}   s     €r   ú
<listcomp>z,TestDispatcher.test_lock.<locals>.<listcomp>Ø   s'   ø€ ÐGÐGÐG¸•9Ô#¨7Ð3Ñ3Ô3ÐGÐGÐGr   é   N)r   r1   ÚrangeÚstartÚjoinÚassertFalse)r%   ÚthreadsÚtr|   rx   r}   s   `  @@@r   Ú	test_lockzTestDispatcher.test_lockÄ   sÃ   øøøø€ ð ˆå	Œð	ð 	ñ 
Œð	ð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð HÐGÐGÐG½UÀ2¹Y¼YÐGÑGÔGˆØð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIØð 	ð 	ˆAØ�FŠF‰HŒHˆHˆHØ×Ò˜Ñ Ô Ð Ð Ð r   c                 ó  —  t          j        |¦  «        t          ¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d¦  «         t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d	¦  «         t          j	        rd S |  
                    t          ¦  «        5 }t          j        dt          j        ¬¦  «        } |d         |d
d
¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t#          |j        ¦  «        d|j        ¦  «         d S )Nr/   rW   rY   rA   r   ro   rn   ç      @ç      @ù              ð?zNo matching definition)r   r1   r   r_   r`   r	   rb   r   r   ÚENABLE_CUDASIMr   rk   ra   r"   r#   r$   rB   rC   rr   )r%   Úsigsr-   r   Úcms        r   Ú_test_explicit_signaturesz(TestDispatcher._test_explicit_signaturesß   sœ  € Ø�DŒH�T‰NŒN�:Ñ&Ô&ˆõ ŒH�Q�bœhÐ'Ñ'Ô'ˆØˆˆ$Œ��1�aÑÔÐØ×Ò  !¤ aÑ(Ô(Ð(åŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ��3˜ÑÔÐØ×Ò  !¤ cÑ*Ô*Ð*åÔ ð 	àˆFð ×Ò�yÑ)Ô)ð 	¨RÝ”˜¥"¤-Ð0Ñ0Ô0ˆAØˆAˆdŒG�A�r˜2ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�ŠÐ.µ°B´LÑ0AÔ0AÑBÔBÐBØ×Ò�˜Qœ[Ñ)Ô)¨1¨a¬kÑ:Ô:Ð:Ð:Ð:s   Ã)4D)Ä)D-Ä0D-c                 ó8   — ddg}|                       |¦  «         d S )Nú(int64[::1], int64, int64)ú (float64[::1], float64, float64))r”   ©r%   r’   s     r   Ú test_explicit_signatures_stringsz/TestDispatcher.test_explicit_signatures_stringsö   s)   € à,Ø2ð4ˆà×&Ò& tÑ,Ô,Ð,Ð,Ð,r   c                 ó¤   — t           d d d…         t           t           ft          d d d…         t          t          fg}|                      |¦  «         d S ©Nr/   )r	   r   r”   r˜   s     r   Útest_explicit_signatures_tuplesz.TestDispatcher.test_explicit_signatures_tuplesü   sH   € å�s�s˜�s”�U¥EÐ*­W°S°S°q°S¬\½7ÅGÐ,LÐMˆØ×&Ò& tÑ,Ô,Ð,Ð,Ð,r   c                 óÔ   — t          t          d d d…         t          t          ¦  «        t          t          d d d…         t          t          ¦  «        g}|                      |¦  «         d S r›   )r
   r	   r   r”   r˜   s     r   Ú#test_explicit_signatures_signaturesz2TestDispatcher.test_explicit_signatures_signatures  sU   € å•U˜3˜3˜Q˜3”Z¥­Ñ.Ô.Ý•W˜S˜S˜q˜S”\¥7­GÑ4Ô4ð6ˆà×&Ò& tÑ,Ô,Ð,Ð,Ð,r   c                 ó¤  — t           d d d…         t           t           fdg}|                      |¦  «         t           d d d…         t           t           ft          t          d d d…         t          t          ¦  «        g}|                      |¦  «         t          t           d d d…         t           t           ¦  «        dg}|                      |¦  «         d S )Nr/   r—   )r	   r”   r
   r   r˜   s     r   Útest_explicit_signatures_mixedz-TestDispatcher.test_explicit_signatures_mixed  s¿   € õ �s�s˜�s”�U¥EÐ*Ø2ð4ˆà×&Ò& tÑ,Ô,Ð,õ �s�s˜�s”�U¥EÐ*Ý•W˜S˜S˜q˜S”\¥7­GÑ4Ô4ð6ˆà×&Ò& tÑ,Ô,Ð,õ •U˜3˜3˜Q˜3”Z¥­Ñ.Ô.Ø2ð4ˆà×&Ò& tÑ,Ô,Ð,Ð,Ð,r   c                 óÖ  — ddg} t          j        |¦  «        t          ¦  «        }t          j        dt          j        ¬¦  «        } |d         |t          j        d¦  «        t          j        d¦  «        ¦  «         |                      |d         d¦  «         t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d	¦  «         d S )
Nz (float64[::1], float32, float32)r—   r/   rW   rY   ç      `>r   ç      ð?ç     ð?)r   r1   r   r_   r`   r   r   rb   ©r%   r’   r-   r   s       r   Ú(test_explicit_signatures_same_type_classz7TestDispatcher.test_explicit_signatures_same_type_class  sÑ   € ð 3Ø2ð4ˆà�DŒH�T‰NŒN�:Ñ&Ô&ˆåŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ�•2”:˜a‘=”=¥"¤*¨VÑ"4Ô"4Ñ5Ô5Ð5Ø×Ò  !¤ cÑ*Ô*Ð*åŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ��1�fÑÔÐØ×Ò  !¤Ð&8Ñ9Ô9Ð9Ð9Ð9r   z'No overload resolution in the simulatorc                 ó¸  —  t          j        g d¢¦  «        t          ¦  «        }|                      t          ¦  «        5 }t          j        dt
          j        ¬¦  «        } |d         |dd¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          |j
        ¦  «        d¦  «         |                      dt          |j
        ¦  «        ¦  «         d S )	N)z (float64[::1], float32, float64)z (float64[::1], float64, float32)z(float64[::1], int64, int64)r/   rW   rY   r£   g       @a  Ambiguous overloading for <function add_kernel [^>]*> \(Array\(float64, 1, 'C', False, aligned=True\), float64, float64\):\n\(Array\(float64, 1, 'C', False, aligned=True\), float32, float64\) -> none\n\(Array\(float64, 1, 'C', False, aligned=True\), float64, float32\) -> noner	   )r   r1   r   r   rk   r_   r`   r   ÚassertRegexpMatchesr#   r$   ÚassertNotIn)r%   r-   r“   r   s       r   Ú-test_explicit_signatures_ambiguous_resolutionz<TestDispatcher.test_explicit_signatures_ambiguous_resolution+  s  € ð7�DŒHð 6ð 6ð 6ñ 7ô 7å7AñCô Cˆð ×Ò�yÑ)Ô)ð 	!¨RÝ”˜¥"¤*Ð-Ñ-Ô-ˆAØˆAˆdŒG�A�s˜CÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	× Ò Ý�”ÑÔð"ñ		
ô 		
ð 		
ð 	×Ò˜¥# b¤lÑ"3Ô"3Ñ4Ô4Ð4Ð4Ð4s   ¿4A?Á?BÂBz$Simulator does not use _prepare_argsc                 óR  —  t          j        d¦  «        t          ¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d¦  «         |                      t          |j	        ¦  «        d|j	        ¦  «         dd	g} t          j        |¦  «        t          ¦  «        }t          j        dt          j
        ¬¦  «        } |d         |t          j        d¦  «        d¦  «         |                      |d         d
¦  «         d S )Nr–   r/   rW   rY   rn   rŽ   r   ro   r—   ç      @)r   r1   r   r_   r`   r	   rb   rB   rC   rr   r   r   )r%   r-   r   r’   s       r   Útest_explicit_signatures_unsafez.TestDispatcher.test_explicit_signatures_unsafeE  s  € ð 3�DŒHÐ1Ñ2Ô2µ:Ñ>Ô>ˆÝŒH�Q�bœhÐ'Ñ'Ô'ˆð 	ˆˆ$Œ��3˜ÑÔÐØ×Ò  !¤ aÑ(Ô(Ð(Ø×Ò�˜Qœ[Ñ)Ô)¨1¨a¬kÑ:Ô:Ð:à,Ø2ð4ˆà�DŒH�T‰NŒN�:Ñ&Ô&ˆÝŒH�Q�bœjÐ)Ñ)Ô)ˆàˆˆ$Œ�•2”8˜A‘;”; Ñ$Ô$Ð$Ø×Ò  !¤ cÑ*Ô*Ð*Ð*Ð*r   c                 ó~   ‡—  t          j        |d¬¦  «        t          ¦  «        Št           j        ˆfd„¦   «         }|S )NT©Údevicec                 ó&   •—  ‰||¦  «        | d<   d S r   r   )r   r   r   Ú
add_devices      €r   r-   z,TestDispatcher.add_device_usecase.<locals>.f`  s   ø€ à�:˜a Ñ#Ô#ˆAˆa‰DˆDˆDr   )r   r1   r   )r%   r’   r-   r²   s      @r   Úadd_device_usecasez!TestDispatcher.add_device_usecase[  sO   ø€ ð 1•T”X˜d¨4Ð0Ñ0Ô0µÑ5Ô5ˆ
å	Œð	$ð 	$ð 	$ð 	$ñ 
Œð	$ð ˆr   c                 ó6  — ddg}|                       |¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d¦  «         t          j        dt          j        ¬¦  «        } |d         |d	d
¦  «         |                      |d         d¦  «         t          j        rd S |                      t          ¦  «        5 }t          j        dt          j
        ¬¦  «        } |d         |dd¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      t          |j        ¦  «        d|j        ¦  «         d S )Nú(int64, int64)ú(float64, float64)r/   rW   rY   rA   r   ro   rn   rŽ   r�   r�   zInvalid use of typez(with parameters (complex128, complex128))r³   r_   r`   r	   rb   r   r   r‘   r   r   ra   r#   r$   r"   rB   rC   rr   )r%   r’   r-   r   r“   Úmsgs         r   Útest_explicit_signatures_devicez.TestDispatcher.test_explicit_signatures_devicef  s¿  € ð !Ð"6Ð7ˆØ×#Ò# DÑ)Ô)ˆõ ŒH�Q�bœhÐ'Ñ'Ô'ˆØˆˆ$Œ��1�aÑÔÐØ×Ò  !¤ aÑ(Ô(Ð(åŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ��3˜ÑÔÐØ×Ò  !¤ cÑ*Ô*Ð*åÔ ð 	àˆFð ×Ò�{Ñ+Ô+ð 	¨rÝ”˜¥"¤-Ð0Ñ0Ô0ˆAØˆAˆdŒG�A�r˜2ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �"”,ÑÔˆØ�ŠÐ+¨SÑ1Ô1Ð1Ø�ŠÐ@À#ÑFÔFÐFØ×Ò�˜Qœ[Ñ)Ô)¨1¨a¬kÑ:Ô:Ð:Ð:Ð:s   Ã 4D Ä D$Ä'D$c                 ó¼  — ddg}|                       |¦  «        }t          j        dt          j        ¬¦  «        } |d         |t          j        d¦  «        t          j        d¦  «        ¦  «         |                      |d         d¦  «         t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d	¦  «         d S )
Nz(float32, float32)r¶   r/   rW   rY   r¢   r   r£   r¤   )r³   r_   r`   r   r   rb   r¥   s       r   Ú/test_explicit_signatures_device_same_type_classz>TestDispatcher.test_explicit_signatures_device_same_type_classƒ  sË   € ð %Ð&:Ð;ˆØ×#Ò# DÑ)Ô)ˆåŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ�•2”:˜a‘=”=¥"¤*¨VÑ"4Ô"4Ñ5Ô5Ð5Ø×Ò  !¤ cÑ*Ô*Ð*åŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ��1�fÑÔÐØ×Ò  !¤Ð&8Ñ9Ô9Ð9Ð9Ð9r   c                 óÖ   — g d¢}|                       |¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d¦  «         d S )	N)z(float32, float64)z(float64, float32)rµ   r/   rW   rY   rn   rŽ   r   r�   )r³   r_   r`   r   rb   r¥   s       r   Ú)test_explicit_signatures_device_ambiguousz8TestDispatcher.test_explicit_signatures_device_ambiguous”  sq   € ð NÐMÐMˆØ×#Ò# DÑ)Ô)ˆåŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ��3˜ÑÔÐØ×Ò  !¤ cÑ*Ô*Ð*Ð*Ð*r   z%CUDA Simulator does not force castingc                 ó$  — dg}|                       |¦  «        }t          j        dt          j        ¬¦  «        } |d         |dd¦  «         |                      |d         d¦  «         |                      t          |j        ¦  «        d|j        ¦  «         dd	g}|                       |¦  «        }t          j        dt          j        ¬¦  «        } |d         |t          j	        d¦  «        d¦  «         |                      |d         d
¦  «         d S )Nrµ   r/   rW   rY   rn   rŽ   r   ro   r¶   r¬   )
r³   r_   r`   r	   rb   rB   rC   rr   r   r   r¥   s       r   Ú&test_explicit_signatures_device_unsafez5TestDispatcher.test_explicit_signatures_device_unsafe¡  s  € ð !Ð!ˆØ×#Ò# DÑ)Ô)ˆõ ŒH�Q�bœhÐ'Ñ'Ô'ˆØˆˆ$Œ��3˜ÑÔÐØ×Ò  !¤ aÑ(Ô(Ð(Ø×Ò�˜Qœ[Ñ)Ô)¨1¨a¬kÑ:Ô:Ð:à Ð"6Ð7ˆØ×#Ò# DÑ)Ô)ˆõ ŒH�Q�bœjÐ)Ñ)Ô)ˆØˆˆ$Œ�•2”8˜A‘;”; Ñ$Ô$Ð$Ø×Ò  !¤ cÑ*Ô*Ð*Ð*Ð*r   c                 óØ   — t           j        d„ ¦   «         }t          j        d¬¦  «        d„ ¦   «         }|                      d|j        ¦  «         |                      d|j        ¦  «         d S )Nc                 ó   — dS )ú Add two integers, kernel versionNr   ©ÚaÚbs     r   r   z<TestDispatcher.test_dispatcher_docstring.<locals>.add_kernel¼  ó   € € € r   Tr¯   c                 ó   — dS )ú Add two integers, device versionNr   rÂ   s     r   r²   z<TestDispatcher.test_dispatcher_docstring.<locals>.add_deviceÀ  rÅ   r   rÁ   rÇ   )r   r1   rB   Ú__doc__)r%   r   r²   s      r   Útest_dispatcher_docstringz(TestDispatcher.test_dispatcher_docstring¸  s„   € õ 
Œð	3ð 	3ñ 
Œð	3õ 
Œ˜Ð	Ñ	Ô	ð	3ð 	3ñ 
Ô	ð	3ð 	×ÒÐ;¸ZÔ=OÑPÔPÐPØ×ÒÐ;¸ZÔ=OÑPÔPÐPÐPÐPr   N)rQ   rR   rS   rÈ   re   r   r   ÚexpectedFailureri   rl   ru   rŒ   r”   r™   rœ   rž   r    r¦   rª   r­   r³   r¸   rº   r¼   r¾   rÉ   r   r   r   rU   rU   n   s  € € € € € ØCÐCð5ð 5ð 5ð8 €_Ð2Ñ3Ô3ØÔð3ð 3ñ Ôñ 4Ô3ð3ð €_Ð2Ñ3Ô3ð(ð (ñ 4Ô3ð(ð €_Ð9Ñ:Ô:ð=ð =ñ ;Ô:ð=ð8 €_ÐCÑDÔDð!ð !ñ EÔDð!ð4;ð ;ð ;ð.-ð -ð -ð-ð -ð -ð
-ð -ð -ð-ð -ð -ð$:ð :ð :ð$ €_Ð>Ñ?Ô?ð5ð 5ñ @Ô?ð5ð2 €_Ð;Ñ<Ô<ØÔð+ð +ñ Ôñ =Ô<ð+ð(	ð 	ð 	ð;ð ;ð ;ð::ð :ð :ð"+ð +ð +ð €_Ð<Ñ=Ô=ð+ð +ñ >Ô=ð+ð,Qð Qð Qð Qð Qr   rU   z2CUDA simulator doesn't implement kernel propertiesc                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚTestDispatcherKernelPropertiesc                 óÆ  — t           j        d„ ¦   «         }d}t          j        |t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        } |d|f         ||¦  «          |d|f         ||¦  «         t          t          d d d…         t          ¦  «        }t          t
          d d d…         t          ¦  «        }|                     |¦  «        }|                     |¦  «        }|  	                    |t          ¦  «         |  	                    |t          ¦  «         |                      |d¦  «         |                      |d¦  «         |                     ¦   «         }	|                      |	|j                 |¦  «         |                      |	|j                 |¦  «         ||k    r3t          d¦  «         t          d¦  «         t          j        ¦   «          d S d S )Nc                 ó~   — t          j        d¦  «        }||k     r"dt          j        | |         ¦  «        z  | |<   d S d S ©Nr/   g…ëQ¸	@©r   ÚgridÚmathÚsin©r   Únrƒ   s      r   Úpi_sin_arrayz[TestDispatcherKernelProperties.test_get_regs_per_thread_unspecialized.<locals>.pi_sin_arrayÍ  ó=   € å”	˜!‘”ˆAØ�1ŠuˆuØ�dœh q¨¤t™nœnÑ,��!‘��ð ˆur   é
   rW   r/   r   z,f32 and f64 variant thread usages are equal.z-This may warrant some investigation. Devices:)r   r1   r_   r`   r   r   r
   r	   Úget_regs_per_threadÚassertIsInstanceÚintÚassertGreaterrB   ÚargsÚprintÚdetect)
r%   rÖ   ÚNÚarr_f32Úarr_f64Úsig_f32Úsig_f64Úregs_per_thread_f32Úregs_per_thread_f64Úregs_per_thread_alls
             r   Ú&test_get_regs_per_thread_unspecializedzETestDispatcherKernelProperties.test_get_regs_per_thread_unspecializedÊ  sã  € õ 
Œð	-ð 	-ñ 
Œð	-ð ˆÝ”(˜1¥B¤JÐ/Ñ/Ô/ˆÝ”(˜1¥B¤JÐ/Ñ/Ô/ˆàˆ�Q˜�TÔ˜7 AÑ&Ô&Ð&Øˆ�Q˜�TÔ˜7 AÑ&Ô&Ð&õ •w˜s˜s ˜s”|¥UÑ+Ô+ˆÝ•w˜s˜s ˜s”|¥UÑ+Ô+ˆØ*×>Ò>¸wÑGÔGÐØ*×>Ò>¸wÑGÔGÐà×ÒÐ1µ3Ñ7Ô7Ð7Ø×ÒÐ1µ3Ñ7Ô7Ð7à×ÒÐ.°Ñ2Ô2Ð2Ø×ÒÐ.°Ñ2Ô2Ð2ð
 +×>Ò>Ñ@Ô@ÐØ×ÒÐ,¨W¬\Ô:Ø,ñ	.ô 	.ð 	.à×ÒÐ,¨W¬\Ô:Ø,ñ	.ô 	.ð 	.ð Ð"5Ò5Ð5õ Ð@ÑAÔAÐAÝÐAÑBÔBÐBÝŒK‰MŒMˆMˆMˆMð 6Ð5r   c                 ó  — t          j        t          t          d d d…         t          ¦  «        ¦  «        d„ ¦   «         }|                     ¦   «         }|                      |t          ¦  «         |                      |d¦  «         d S )Nr/   c                 ó~   — t          j        d¦  «        }||k     r"dt          j        | |         ¦  «        z  | |<   d S d S rÏ   rÐ   rÔ   s      r   rÖ   zYTestDispatcherKernelProperties.test_get_regs_per_thread_specialized.<locals>.pi_sin_arrayú  r×   r   r   )	r   r1   r
   r   r	   rÙ   rÚ   rÛ   rÜ   )r%   rÖ   Úregs_per_threads      r   Ú$test_get_regs_per_thread_specializedzCTestDispatcherKernelProperties.test_get_regs_per_thread_specializedù  s   € Ý	Œ•$•w˜s˜s ˜s”|¥UÑ+Ô+Ñ	,Ô	,ð	-ð 	-ñ 
-Ô	,ð	-ð '×:Ò:Ñ<Ô<ˆØ×Ò˜o­sÑ3Ô3Ð3Ø×Ò˜?¨AÑ.Ô.Ð.Ð.Ð.r   c                 ó¤  — t           j        d„ ¦   «         } |d         dd¦  «          |d         dd¦  «         t          t          t          ¦  «        }t          t
          t          ¦  «        }|                     |¦  «        }|                     |¦  «        }|                      |t          ¦  «         |                      |t          ¦  «         |  	                    |d¦  «         |  	                    |d¦  «         |                     ¦   «         }|  
                    ||j                 |¦  «         |  
                    ||j                 |¦  «         d S )Nc                 ó,   — |rt          | ¦  «         d S d S r   )rÞ   )ÚvalÚto_prints     r   Úconst_fmt_stringzYTestDispatcherKernelProperties.test_get_const_mem_unspecialized.<locals>.const_fmt_string  s%   € ð ð Ý�c‘
”
�
�
�
ðð r   rY   r/   Fr£   é   rp   )r   r1   r
   r	   r   r   Úget_const_mem_sizerÚ   rÛ   ÚassertGreaterEqualrB   rÝ   )r%   rñ   Úsig_i64rä   Úconst_mem_size_i64Úconst_mem_size_f64Úconst_mem_size_alls          r   Ú test_get_const_mem_unspecializedz?TestDispatcherKernelProperties.test_get_const_mem_unspecialized  sM  € Ý	Œð	ð 	ñ 
Œð	ð 	Ð˜Ô˜q %Ñ(Ô(Ð(ØÐ˜Ô˜s EÑ*Ô*Ð*õ •u�gÑ&Ô&ˆÝ•w¥Ñ(Ô(ˆØ-×@Ò@ÀÑIÔIÐØ-×@Ò@ÀÑIÔIÐà×ÒÐ0µ#Ñ6Ô6Ð6Ø×ÒÐ0µ#Ñ6Ô6Ð6ð 	×ÒÐ 2°AÑ6Ô6Ð6à×ÒÐ 2°AÑ6Ô6Ð6ð .×@Ò@ÑBÔBÐØ×ÒÐ+¨G¬LÔ9Ð;MÑNÔNÐNØ×ÒÐ+¨G¬LÔ9Ð;MÑNÔNÐNÐNÐNr   c                 óV  ‡— t          j        dt           j        ¬¦  «        Št          t          d d d…         ¦  «        }t	          j        |¦  «        ˆfd„¦   «         }|                     |¦  «        }|                      |t          ¦  «         |  	                    |‰j
        ¦  «         d S )Né    rW   r/   c                 ó„   •— t           j                             ‰¦  «        }t          j        d¦  «        }||         | |<   d S r›   )r   ÚconstÚ
array_likerÑ   )r   ÚCrƒ   Úarrs      €r   Úconst_array_usezVTestDispatcherKernelProperties.test_get_const_mem_specialized.<locals>.const_array_use,  s6   ø€ å”
×%Ò% cÑ*Ô*ˆAÝ”	˜!‘”ˆAØ�Q”4ˆAˆa‰DˆDˆDr   )r_   Úaranger	   r
   r   r1   ró   rÚ   rÛ   rô   Únbytes)r%   Úsigr  Úconst_mem_sizer   s       @r   Útest_get_const_mem_specializedz=TestDispatcherKernelProperties.test_get_const_mem_specialized(  s¤   ø€ ÝŒi˜¥"¤(Ð+Ñ+Ô+ˆÝ•5˜˜˜1˜”:ÑÔˆå	Œ�#‰Œð	ð 	ð 	ð 	ñ 
Œð	ð
 )×;Ò;¸CÑ@Ô@ˆØ×Ò˜n­cÑ2Ô2Ð2Ø×Ò °´
Ñ;Ô;Ð;Ð;Ð;r   c                 ój  ‡
— dŠ
t           j        ˆ
fd„¦   «         }t          j        ‰
t          j        ¬¦  «        }t          j        ‰
t          j        ¬¦  «        } |d         |¦  «          |d         |¦  «         t          t          d d d…         ¦  «        }t          t
          d d d…         ¦  «        }|                     |¦  «        }|                     |¦  «        }|                      |t          ¦  «         |                      |t          ¦  «         |  
                    |‰
dz  ¦  «         |  
                    |‰
dz  ¦  «         |                     ¦   «         }|                     ¦   «         }	|  
                    ||j                 |¦  «         |  
                    |	|j                 |¦  «         d S )NrØ   c                 ó¼   •— t           j                             ‰| j        ¬¦  «        }t	          ‰¦  «        D ]}|||<   Œt	          ‰¦  «        D ]}||         | |<   Œd S ©NrW   )r   ÚsharedÚarrayrX   r†   )ÚaryÚsmÚjrà   s      €r   Úsimple_smemz_TestDispatcherKernelProperties.test_get_shared_mem_per_block_unspecialized.<locals>.simple_smem;  sm   ø€ å”×"Ò" 1¨C¬IÐ"Ñ6Ô6ˆBÝ˜1‘X”Xð ð �Ø��1‘�Ý˜1‘X”Xð ð �Ø˜Aœ��A‘�ðð r   rW   rY   r/   rp   é   )r   r1   r_   r`   r   r   r
   Úget_shared_mem_per_blockrÚ   rÛ   rB   rÝ   )r%   r  rá   râ   rã   rä   Ú
sh_mem_f32Ú
sh_mem_f64Úsh_mem_f32_allÚsh_mem_f64_allrà   s             @r   Ú+test_get_shared_mem_per_block_unspecializedzJTestDispatcherKernelProperties.test_get_shared_mem_per_block_unspecialized6  sŸ  ø€ Øˆõ 
Œð	ð 	ð 	ð 	ñ 
Œð	õ ”(˜1¥B¤JÐ/Ñ/Ô/ˆÝ”(˜1¥B¤JÐ/Ñ/Ô/ˆàˆ�DÔ˜'Ñ"Ô"Ð"Øˆ�DÔ˜'Ñ"Ô"Ð"å•w˜s˜s ˜s”|Ñ$Ô$ˆÝ•w˜s˜s ˜s”|Ñ$Ô$ˆà ×9Ò9¸'ÑBÔBˆ
Ø ×9Ò9¸'ÑBÔBˆ
à×Ò˜j­#Ñ.Ô.Ð.Ø×Ò˜j­#Ñ.Ô.Ð.à×Ò˜ Q¨¡UÑ+Ô+Ð+Ø×Ò˜ Q¨¡UÑ+Ô+Ð+ð
 %×=Ò=Ñ?Ô?ˆØ$×=Ò=Ñ?Ô?ˆØ×Ò˜¨¬Ô5°zÑBÔBÐBØ×Ò˜¨¬Ô5°zÑBÔBÐBÐBÐBr   c                 ó   — t          j        t          t          d d d…         ¦  «        ¦  «        d„ ¦   «         }|                     ¦   «         }|                      |t          ¦  «         |                      |d¦  «         d S )Nr/   c                 óð   — t           j                             dt          ¬¦  «        }t          j        d¦  «        }|dk    rt          d¦  «        D ]}|||<   Œt          j        ¦   «          ||         | |<   d S )Néd   rW   r/   r   )r   r
  r  r   rÑ   r†   Úsyncthreads)r  r  rƒ   r  s       r   r  z]TestDispatcherKernelProperties.test_get_shared_mem_per_block_specialized.<locals>.simple_smem`  sr   € å”×"Ò" 3­gÐ"Ñ6Ô6ˆBÝ”	˜!‘”ˆAØ�AŠvˆvÝ˜s™œð ð �AØ�B�q‘E�EÝÔÑÔÐØ˜”UˆC�‰FˆFˆFr   i�  )r   r1   r
   r   r  rÚ   rÛ   rB   )r%   r  Úshared_mem_per_blocks      r   Ú)test_get_shared_mem_per_block_specializedzHTestDispatcherKernelProperties.test_get_shared_mem_per_block_specialized_  s€   € Ý	Œ•$•w˜s˜s ˜s”|Ñ$Ô$Ñ	%Ô	%ð	ð 	ñ 
&Ô	%ð	ð  +×CÒCÑEÔEÐØ×ÒÐ2µCÑ8Ô8Ð8Ø×ÒÐ-¨sÑ3Ô3Ð3Ð3Ð3r   c                 óÆ  — d}t           j        d„ ¦   «         }t          j        |t          j        ¬¦  «        } |d         |¦  «         t          t          d d d…         ¦  «        }|                     |¦  «        }|                      |t          ¦  «         |  	                    |d¦  «         |                     ¦   «         }|  
                    ||j                 |¦  «         d S )NrØ   c                 ó8   — t          j        d¦  «        }|| |<   d S r›   )r   rÑ   )r  rƒ   s     r   Úsimple_maxthreadszfTestDispatcherKernelProperties.test_get_max_threads_per_block_unspecialized.<locals>.simple_maxthreadsq  s   € å”	˜!‘”ˆAØˆC�‰FˆFˆFr   rW   rY   r/   r   )r   r1   r_   r`   r   r
   Úget_max_threads_per_blockrÚ   rÛ   rÜ   rB   rÝ   )r%   rà   r  rá   rã   Úmax_threads_f32Úmax_threads_f32_alls          r   Ú,test_get_max_threads_per_block_unspecializedzKTestDispatcherKernelProperties.test_get_max_threads_per_block_unspecializedn  sÜ   € Øˆå	Œð	ð 	ñ 
Œð	õ ”(˜1¥B¤JÐ/Ñ/Ô/ˆØÐ˜$Ô Ñ(Ô(Ð(Ý•w˜s˜s ˜s”|Ñ$Ô$ˆØ+×EÒEÀgÑNÔNˆà×Ò˜o­sÑ3Ô3Ð3Ø×Ò˜?¨AÑ.Ô.Ð.à/×IÒIÑKÔKÐØ×ÒÐ,¨W¬\Ô:¸OÑLÔLÐLÐLÐLr   c                 óB  ‡	— dŠ	t           j        ˆ	fd„¦   «         }t          j        ‰	t          j        ¬¦  «        }t          j        ‰	t          j        ¬¦  «        } |d         |¦  «          |d         |¦  «         t          t          d d d…         ¦  «        }t          t
          d d d…         ¦  «        }|                     |¦  «        }|                     |¦  «        }|                      |t          ¦  «         |                      |t          ¦  «         |  
                    |‰	dz  ¦  «         |  
                    |‰	dz  ¦  «         |                     ¦   «         }|                      ||j                 |¦  «         |                      ||j                 |¦  «         d S )Néè  c                 ó¼   •— t           j                             ‰| j        ¬¦  «        }t	          ‰¦  «        D ]}|||<   Œt	          ‰¦  «        D ]}||         | |<   Œd S r	  ©r   Úlocalr  rX   r†   ©r  Úlmr  rà   s      €r   Úsimple_lmemz_TestDispatcherKernelProperties.test_get_local_mem_per_thread_unspecialized.<locals>.simple_lmem‡  óm   ø€ å”×!Ò! !¨3¬9Ð!Ñ5Ô5ˆBÝ˜1‘X”Xð ð �Ø��1‘�Ý˜1‘X”Xð ð �Ø˜Aœ��A‘�ðð r   rW   rY   r/   rp   r  )r   r1   r_   r`   r   r   r
   Úget_local_mem_per_threadrÚ   rÛ   rô   rB   rÝ   )
r%   r+  rá   râ   rã   rä   Úlocal_mem_f32Úlocal_mem_f64Úlocal_mem_allrà   s
            @r   Ú+test_get_local_mem_per_thread_unspecializedzJTestDispatcherKernelProperties.test_get_local_mem_per_thread_unspecialized�  sŽ  ø€ ð ˆå	Œð	ð 	ð 	ð 	ñ 
Œð	õ ”(˜1¥B¤JÐ/Ñ/Ô/ˆÝ”(˜1¥B¤JÐ/Ñ/Ô/ˆàˆ�DÔ˜'Ñ"Ô"Ð"Øˆ�DÔ˜'Ñ"Ô"Ð"å•w˜s˜s ˜s”|Ñ$Ô$ˆÝ•w˜s˜s ˜s”|Ñ$Ô$ˆØ#×<Ò<¸WÑEÔEˆØ#×<Ò<¸WÑEÔEˆØ×Ò˜m­SÑ1Ô1Ð1Ø×Ò˜m­SÑ1Ô1Ð1à×Ò ¨q°1©uÑ5Ô5Ð5Ø×Ò ¨q°1©uÑ5Ô5Ð5ð
 $×<Ò<Ñ>Ô>ˆØ×Ò˜ w¤|Ô4°mÑDÔDÐDØ×Ò˜ w¤|Ô4°mÑDÔDÐDÐDÐDr   c                 ó  ‡— dŠt          j        t          t          d d d…         ¦  «        ¦  «        ˆfd„¦   «         }|                     ¦   «         }|                      |t          ¦  «         |                      |‰dz  ¦  «         d S )Nr%  r/   c                 ó¼   •— t           j                             ‰| j        ¬¦  «        }t	          ‰¦  «        D ]}|||<   Œt	          ‰¦  «        D ]}||         | |<   Œd S r	  r'  r)  s      €r   r+  z]TestDispatcherKernelProperties.test_get_local_mem_per_thread_specialized.<locals>.simple_lmem®  r,  r   rp   )r   r1   r
   r   r-  rÚ   rÛ   rô   )r%   r+  Úlocal_mem_per_threadrà   s      @r   Ú)test_get_local_mem_per_thread_specializedzHTestDispatcherKernelProperties.test_get_local_mem_per_thread_specialized¨  s–   ø€ ð ˆå	Œ•$•w˜s˜s ˜s”|Ñ$Ô$Ñ	%Ô	%ð	ð 	ð 	ð 	ñ 
&Ô	%ð	ð  +×CÒCÑEÔEÐØ×ÒÐ2µCÑ8Ô8Ð8Ø×ÒÐ 4°a¸!±eÑ<Ô<Ð<Ð<Ð<r   N)rQ   rR   rS   rè   rì   rù   r  r  r  r#  r1  r5  r   r   r   rÌ   rÌ   È  s«   € € € € € ð-ð -ð -ð^
/ð 
/ð 
/ð!Oð !Oð !OðF<ð <ð <ð'Cð 'Cð 'CðR4ð 4ð 4ðMð Mð Mð&%Eð %Eð %EðN=ð =ð =ð =ð =r   rÌ   Ú__main__)Únumpyr_   r€   Únumbar   r   r   r   r   r   r	   r
   Únumba.core.errorsr   Únumba.cuda.testingr   r   r   rÒ   r   r   r   rU   rÌ   rQ   Úmainr   r   r   ú<module>r<     s©  ðØ Ð Ð Ð Ø Ð Ð Ð à MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ )Ð )Ð )Ð )Ð )Ð )Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ €€€ðð ð ðð ð ð €ÐBÑCÔCðX2ð X2ð X2ð X2ð X2 <ñ X2ô X2ñ DÔCðX2ðvWQð WQð WQð WQð WQ�\ñ WQô WQð WQðt
 €ÐEÑFÔFðo=ð o=ð o=ð o=ð o= \ñ o=ô o=ñ GÔFðo=ðd ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   