§
    1@Äj»>  ã                   ó:  — d dl Zd dlmZ d dlmZmZmZmZ d dlm	Z	 d dlm
Z
 d dlmZmZ d dlZd dlZd dlmZmZ d dlmZ efd	„Z ed
¦  «         G d„ de¦  «        ¦   «         Z ed
¦  «         G d„ de¦  «        ¦   «         Zedk    r ej        ¦   «          dS dS )é    N)Ú
namedtuple)ÚvoidÚint32Úfloat32Úfloat64)Úguvectorize)Úcuda)Úskip_on_cudasimÚCUDATestCase)ÚNumbaPerformanceWarningÚTypingError)Úoverride_configc           
      ó¤   — t          t          | d d …d d …f         | d d …d d …f         | d d …d d …f         ¦  «        gdd¬¦  «        d„ ¦   «         }|S )Nz(m,n),(n,p)->(m,p)r	   ©Útargetc           
      óò   — | j         \  }}|j         \  }}t          |¦  «        D ]R}t          |¦  «        D ]@}d|||f<   t          |¦  «        D ]'}|||fxx         | ||f         |||f         z  z  cc<   Œ(ŒAŒSd S ©Nr   ©ÚshapeÚrange)	ÚAÚBÚCÚmÚnÚpÚiÚjÚks	            úTC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/test_gufunc.pyÚ
matmulcorez*_get_matmulcore_gufunc.<locals>.matmulcore   s«   € ð Œw‰ˆˆ1ØŒw‰ˆˆ1Ý�q‘”ð 	1ð 	1ˆAÝ˜1‘X”Xð 1ð 1�Ø��!�Q�$‘Ý˜q™œð 1ð 1�AØ�a˜�d�G�G”G˜q  A œw¨¨1¨a¨4¬Ñ0Ñ0�G�G‘G�Gð1ð1ð	1ð 	1ó    )r   r   )Údtyper!   s     r    Ú_get_matmulcore_gufuncr$      s|   € Ý•$�u˜Q˜Q˜Q   ˜T”{ E¨!¨!¨!¨Q¨Q¨Q¨$¤K°°q°q°q¸!¸!¸!°t´Ñ=Ô=Ð>Ø%Øð ñ  ô  ð1ð 1ñ ô  ð1ð Ðr"   z&ufunc API unsupported in the simulatorc                   ó˜   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestCUDAGufuncc                 ó¤  — t          ¦   «         }d}t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        }t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        } |||¦  «        }t          j        ||¦  «        }|                      t          j        ||¦  «        ¦  «         d S ©Né   é   ©r#   é   ©r$   ÚnpÚaranger   ÚreshapeÚmatmulÚ
assertTrueÚallclose©ÚselfÚgufuncÚ	matrix_ctr   r   r   ÚGolds          r    Útest_gufunc_smallz TestCUDAGufunc.test_gufunc_small!   sÆ   € å'Ñ)Ô)ˆàˆ	ÝŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô FˆåŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô Fˆð ˆF�1�a‰LŒLˆÝŒy˜˜A‰ŒˆØ�Š�œ A tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r"   c                 óð  — t          ¦   «         }d}t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        }t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        }t          j        |¦  «        } |||¦  «                             ¦   «         }t          j        ||¦  «        }|  	                    t          j
        ||¦  «        ¦  «         d S r(   )r$   r.   r/   r   r0   r	   Ú	to_deviceÚcopy_to_hostr1   r2   r3   )r5   r6   r7   r   r   ÚdBr   r8   s           r    Útest_gufunc_auto_transferz(TestCUDAGufunc.test_gufunc_auto_transfer/   sá   € å'Ñ)Ô)ˆàˆ	ÝŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô FˆåŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô Fˆõ Œ^˜AÑÔˆàˆF�1�b‰MŒM×&Ò&Ñ(Ô(ˆÝŒy˜˜A‰ŒˆØ�Š�œ A tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r"   c                 ó¤  — t          ¦   «         }d}t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        }t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        } |||¦  «        }t          j        ||¦  «        }|                      t          j        ||¦  «        ¦  «         d S )Néé  r)   r*   r+   r,   r-   r4   s          r    Útest_gufunczTestCUDAGufunc.test_gufunc?   sÆ   € å'Ñ)Ô)ˆàˆ	ÝŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô FˆåŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô Fˆð ˆF�1�a‰LŒLˆÝŒy˜˜A‰ŒˆØ�Š�œ A tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r"   c                 ó¨  — t          ¦   «         }d}t          j        |dz  dz  t          j        ¬¦  «                             dddd¦  «        }t          j        |dz  dz  t          j        ¬¦  «                             dddd¦  «        } |||¦  «        }t          j        ||¦  «        }|                      t          j        ||¦  «        ¦  «         d S )Néd   r)   r*   r+   é   r,   r-   r4   s          r    Útest_gufunc_hidimz TestCUDAGufunc.test_gufunc_hidimM   sº   € å'Ñ)Ô)ˆàˆ	ÝŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ1ÀbÈ!ÈQÑOÔOˆÝŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ1ÀbÈ!ÈQÑOÔOˆàˆF�1�a‰LŒLˆÝŒy˜˜A‰ŒˆØ�Š�œ A tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r"   c                 ó²  — t          t          ¬¦  «        }t          j                             ddd¦  «        }t          j                             dd¦  «        }t          j        ||¦  «        } |||¦  «        }t          j                             ||¦  «          ||t          j        |d¦  «        ¦  «        }t          j                             ||¦  «         d S )Nr+   é
   é   )rG   é   rI   )	r$   r   r.   ÚrandomÚrandnr1   ÚtestingÚassert_allcloseÚtile)r5   r6   ÚXÚYÚgoldÚres1Úres2s          r    Útest_gufunc_new_axisz#TestCUDAGufunc.test_gufunc_new_axisY   s¯   € å'­gÐ6Ñ6Ô6ˆåŒI�OŠO˜B  1Ñ%Ô%ˆÝŒI�OŠO˜A˜qÑ!Ô!ˆåŒy˜˜A‰Œˆàˆv�a˜‰|Œ|ˆÝ
Œ
×"Ò" 4¨Ñ.Ô.Ð.àˆv�a�œ  JÑ/Ô/Ñ0Ô0ˆÝ
Œ
×"Ò" 4¨Ñ.Ô.Ð.Ð.Ð.r"   c                 ó°  — t          ¦   «         }d}t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        }t          j        |dz  dz  t          j        ¬¦  «                             |dd¦  «        }t          j        ¦   «         }t          j        ||¦  «        }t          j        ||¦  «        }t          j        d|j	        |¬¦  «        } |||||¬¦  «        }| 
                    |¬	¦  «        }	|                     ¦   «          t          j        ||¦  «        }
|                      t          j        |	|
¦  «        ¦  «         d S )
Nr@   r)   r*   r+   r,   )r@   r)   r,   )r   r#   Ústream)ÚoutrV   )rV   )r$   r.   r/   r   r0   r	   rV   r;   Údevice_arrayr#   r<   Úsynchronizer1   r2   r3   )r5   r6   r7   r   r   rV   ÚdAr=   ÚdCr   r8   s              r    Útest_gufunc_streamz!TestCUDAGufunc.test_gufunc_streamh   s<  € å'Ñ)Ô)ˆð ˆ	ÝŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô FˆåŒI�i !‘m aÑ'­r¬zÐ:Ñ:Ô:×BÒBÀ9ÈaØCDñFô Fˆõ ”‘”ˆÝŒ^˜A˜vÑ&Ô&ˆÝŒ^˜A˜vÑ&Ô&ˆåÔ \¸¼ÈÐPÑPÔPˆØˆV�B˜ ¨6Ð2Ñ2Ô2ˆØ�OŠO 6ˆOÑ*Ô*ˆØ×ÒÑÔÐåŒy˜˜A‰Œˆà�Š�œ A tÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r"   c                 óV  — t          t          t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        dz   }t          j        |¦  «        } |||¬¦  «         t          j                             ||¦  «         d S )	Nú(x)->(x)r	   r   c                 óJ   — t          |j        ¦  «        D ]}| |         ||<   Œd S ©N©r   Úsize©r   r   r   s      r    Úcopyz&TestCUDAGufunc.test_copy.<locals>.copy‚   ó4   € õ ˜1œ6‘]”]ð ð �Ø˜”t��!‘�ðð r"   rG   r+   rI   ©rW   ©r   r   r   r.   r/   Ú
zeros_likerL   rM   ©r5   rd   r   r   s       r    Ú	test_copyzTestCUDAGufunc.test_copy€   s­   € å	•d�7 1 1 1œ:¥w¨q¨q¨q¤zÑ2Ô2Ð3ØØ"ð
$ñ 
$ô 
$ð	ð 	ñ
$ô 
$ð	õ ŒI�b¥¤
Ð+Ñ+Ô+¨aÑ/ˆÝŒM˜!ÑÔˆØˆˆQ�Aˆ‰ŒˆÝ
Œ
×"Ò" 1 aÑ(Ô(Ð(Ð(Ð(r"   c                 óN  — t          t          d d …         t          d d …         fgdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        dz   }t          j        |¦  «        } |||¬¦  «         |                      t          j        ||¦  «        ¦  «         d S )	Nr^   r	   r   c                 óJ   — t          |j        ¦  «        D ]}| |         ||<   Œd S r`   ra   rc   s      r    rd   z9TestCUDAGufunc.test_copy_unspecified_return.<locals>.copy‘   re   r"   rG   r+   rI   rf   )r   r   r.   r/   rh   r2   r3   ri   s       r    Útest_copy_unspecified_returnz+TestCUDAGufunc.test_copy_unspecified_returnŽ   s°   € õ 
•w˜q˜q˜q”z¥7¨1¨1¨1¤:Ð.Ð/ØØ"ð
$ñ 
$ô 
$ð	ð 	ñ
$ô 
$ð	õ ŒI�b¥¤
Ð+Ñ+Ô+¨aÑ/ˆÝŒM˜!ÑÔˆØˆˆQ�Aˆ‰ŒˆØ�Š�œ A qÑ)Ô)Ñ*Ô*Ð*Ð*Ð*r"   c                 óf  — t          t          t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        dz   }t          j        |¦  «        } |||¬¦  «         |                      t          j        ||¦  «        ¦  «         d S )	Nr^   r	   r   c                 óJ   — t          |j        ¦  «        D ]}| |         ||<   Œd S r`   ra   rc   s      r    rd   z*TestCUDAGufunc.test_copy_odd.<locals>.copyŸ   re   r"   é   r+   rI   rf   )r   r   r   r.   r/   rh   r2   r3   ri   s       r    Útest_copy_oddzTestCUDAGufunc.test_copy_odd�   s³   € å	•d�7 1 1 1œ:¥w¨q¨q¨q¤zÑ2Ô2Ð3ØØ"ð
$ñ 
$ô 
$ð	ð 	ñ
$ô 
$ð	õ ŒI�b¥¤
Ð+Ñ+Ô+¨aÑ/ˆÝŒM˜!ÑÔˆØˆˆQ�Aˆ‰ŒˆØ�Š�œ A qÑ)Ô)Ñ*Ô*Ð*Ð*Ð*r"   c           	      óž  — t          t          t          d d …d d …f         t          d d …d d …f         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «                             dd¦  «        d	z   }t          j        |¦  «        } |||¬
¦  «         |                      t          j        ||¦  «        ¦  «         d S )Nz(x, y)->(x, y)r	   r   c                 ó˜   — t          |j        d         ¦  «        D ].}t          |j        d         ¦  «        D ]}| ||f         |||f<   ŒŒ/d S )Nr   rI   ©r   r   )r   r   ÚxÚys       r    Úcopy2dz*TestCUDAGufunc.test_copy2d.<locals>.copy2d­   sd   € õ ˜1œ7 1œ:Ñ&Ô&ð &ð &�Ý˜qœw qœzÑ*Ô*ð &ð &�AØ  1 œg�A�a˜�d‘G�Gð&ð&ð &r"   é   r+   r,   é   rI   rf   )	r   r   r   r.   r/   r0   rh   r2   r3   )r5   rw   r   r   s       r    Útest_copy2dzTestCUDAGufunc.test_copy2d«   s×   € å	•d�7 1 1 1 a a a 4œ=­'°!°!°!°Q°Q°Q°$¬-Ñ8Ô8Ð9Ø%Ø"ð
$ñ 
$ô 
$ð	&ð 	&ñ
$ô 
$ð	&õ
 ŒI�b¥¤
Ð+Ñ+Ô+×3Ò3°A°qÑ9Ô9¸AÑ=ˆÝŒM˜!ÑÔˆØˆˆq�aÐÑÔÐØ�Š�œ A qÑ)Ô)Ñ*Ô*Ð*Ð*Ð*r"   c                 óÄ  ‡— t          t          t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         Št          j        ˆfd„¦   «         }t          j        d¦  «                             d¦  «        }t          j        |¦  «        }d}|  	                    t          |¦  «        5   |d	         ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nz(n)->(n)r	   r   c                 óV   — t          | j        d         ¦  «        D ]}| |         ||<   Œd S r   rt   )r   Úbr   s      r    Úgufunc_copyzDTestCUDAGufunc.test_not_supported_call_from_jit.<locals>.gufunc_copy¼   s:   € õ ˜1œ7 1œ:Ñ&Ô&ð ð �Ø˜”t��!‘�ðð r"   c                 ó   •—  ‰| |¦  «        S r`   © )r   r}   r~   s     €r    Úcuda_jitzATestCUDAGufunc.test_not_supported_call_from_jit.<locals>.cuda_jitÂ   s   ø€ à�;˜q !Ñ$Ô$Ð$r"   é €  r   z#Untyped global name 'gufunc_copy'.*)rI   rI   )r   r   r   r	   Újitr.   r/   Úastyperh   ÚassertRaisesRegexr   )r5   r�   r   r}   Úmsgr~   s        @r    Ú test_not_supported_call_from_jitz/TestCUDAGufunc.test_not_supported_call_from_jitº   s<  ø€ å	•d�5   œ8¥U¨1¨1¨1¤XÑ.Ô.Ð/Ø¨ð
0ñ 
0ô 
0ð	ð 	ñ
0ô 
0ð	õ 
Œð	%ð 	%ð 	%ð 	%ñ 
Œð	%õ ŒI�iÑ Ô ×'Ò'¨Ñ0Ô0ˆÝŒM˜!ÑÔˆØ3ˆØ×#Ò#¥K°Ñ5Ô5ð 	!ð 	!ØˆH�TŒN˜1˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   Â5CÃCÃCc           	      ó4  — t          dgdd¬¦  «        d„ ¦   «         }t          j                             d¦  «                             d¦  «        }t          j                             d¦  «                             d¦  «        }t          j        |j        d         ¦  «                             d¦  «        }t          d	d
¦  «        5  t          j	        d¬¦  «        5 } ||||¦  «         |  
                    |d         j        t          ¦  «         |                      dt          |d         j        ¦  «        ¦  «         |                      dt          |d         j        ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nú(void(float32[:], float32[:], float32[:])ú(n),(n)->(n)r	   r   c                 ól   — | j         d         }t          |¦  «        D ]}| |         ||         z  ||<   Œd S r   r   ©Úar}   ÚdistÚlenr   s        r    Únumba_dist_cudazMTestCUDAGufunc.test_inefficient_launch_configuration.<locals>.numba_dist_cudaÏ   óE   € ð ”'˜!”*ˆCÝ˜3‘Z”Zð &ð &�Ø˜Aœ$  1¤™+��Q‘�ð&ð &r"   r‚   r   r   ÚCUDA_LOW_OCCUPANCY_WARNINGSrI   T©Úrecordz	Grid sizezlow occupancy)r   r.   rJ   Úrandr„   Úzerosr   r   ÚwarningsÚcatch_warningsÚassertEqualÚcategoryr   ÚassertInÚstrÚmessage)r5   r�   r�   r}   rŽ   Úws         r    Ú%test_inefficient_launch_configurationz4TestCUDAGufunc.test_inefficient_launch_configurationÎ   s  € Ý	Ð@ÐAØ#¨Fð
4ñ 
4ô 
4ð	&ð 	&ñ
4ô 
4ð	&õ
 ŒI�NŠN˜9Ñ%Ô%×,Ò,¨YÑ7Ô7ˆÝŒI�NŠN˜9Ñ%Ô%×,Ò,¨YÑ7Ô7ˆÝŒx˜œ œ
Ñ#Ô#×*Ò*¨9Ñ5Ô5ˆåÐ:¸AÑ>Ô>ð 	Bð 	BÝÔ(°Ð5Ñ5Ô5ð B¸Ø�  1 dÑ+Ô+Ð+Ø× Ò   1¤¤Õ0GÑHÔHÐHØ—’˜k­3¨q°¬t¬|Ñ+<Ô+<Ñ=Ô=Ð=Ø—’˜o­s°1°Q´4´<Ñ/@Ô/@ÑAÔAÐAð	Bð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bs7   ÃFÃBE5Å)FÅ5E9	Å9FÅ<E9	Å=FÆFÆFc                 óˆ  — t          dgddd¬¦  «        d„ ¦   «         }t          j                             d¦  «                             d¦  «                             d	¦  «        }t          j                             d¦  «                             d¦  «                             d	¦  «        }t          j        |¦  «        }t          d
d¦  «        5  t          j	        d¬¦  «        5 } ||||¦  «         |  
                    t          |¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr‰   rŠ   Tr	   )Únopythonr   c                 ól   — | j         d         }t          |¦  «        D ]}| |         ||         z  ||<   Œd S r   r   rŒ   s        r    Únumba_dist_cuda2zLTestCUDAGufunc.test_efficient_launch_configuration.<locals>.numba_dist_cuda2â   r‘   r"   i   r   )i   r)   r’   rI   r“   r   )r   r.   rJ   r•   r„   r0   rh   r   r—   r˜   r™   r�   )r5   r£   r�   r}   rŽ   rž   s         r    Ú#test_efficient_launch_configurationz2TestCUDAGufunc.test_efficient_launch_configurationá   s¾  € Ý	Ð@ÐAØ#¨d¸6ð
Cñ 
Cô 
Cð	&ð 	&ñ
Cô 
Cð	&õ
 ŒI�NŠN˜:Ñ&Ô&×-Ò-¨iÑ8Ô8ßŠG�KÑ Ô ð 	
åŒI�NŠN˜:Ñ&Ô&×-Ò-¨iÑ8Ô8ßŠG�KÑ Ô ð 	
åŒ}˜QÑÔˆåÐ:¸AÑ>Ô>ð 	,ð 	,ÝÔ(°Ð5Ñ5Ô5ð ,¸Ø Ð   A tÑ,Ô,Ð,Ø× Ò ¥ Q¡¤¨Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s6   ÃD7Ã"1DÄD7ÄD#	Ä#D7Ä&D#	Ä'D7Ä7D;Ä>D;c           
      óÔ  — d„ } t          t          t          d d …         t          d d …         ¦  «        gddd¬¦  «        |¦  «         |                      t          ¦  «        5 } t          t          t          d d …         t          d d …         ¦  «        gddd¬¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 ó   — d S r`   r€   ©r   r   s     r    Úfooz.TestCUDAGufunc.test_nopython_flag.<locals>.fooö   ó   € ØˆDr"   r^   r	   T)r   r¡   Fznopython flag must be True)r   r   r   ÚassertRaisesÚ	TypeErrorr™   rœ   Ú	exception)r5   r¨   Úraisess      r    Útest_nopython_flagz!TestCUDAGufunc.test_nopython_flagô   s?  € ð	ð 	ð 	ð	#�•T�' ! ! !œ*¥g¨a¨a¨a¤jÑ1Ô1Ð2°JÀvØ!ð	#ñ 	#ô 	#Ø#&ñ	(ô 	(ð 	(ð ×Ò�yÑ)Ô)ð 	<¨Vð7�K��g a a aœj­'°!°!°!¬*Ñ5Ô5Ð6¸
Ø%°ð7ñ 7ô 7Ø7:ñ<ô <ð <ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	×ÒÐ5µs¸6Ô;KÑ7LÔ7LÑMÔMÐMÐMÐMs   Á#AB5Â5B9Â<B9c           
      ór  — d„ }|                       t          ¦  «        5 } t          t          t          d d …         t          d d …         ¦  «        gdddd¬¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          |j        ¦  «        }|                      |d t          |¦  «        …         |¦  «         |t          |¦  «        d …          	                    ¦   «          
                    d¦  «        }d	„ |D ¦   «         }|                      t          d
dg¦  «        t          |¦  «        ¦  «         d S )Nc                 ó   — d S r`   r€   r§   s     r    r¨   z.TestCUDAGufunc.test_invalid_flags.<locals>.foo  r©   r"   r^   r	   TF)r   Úwhat1Úever2z/The following target options are not supported:ú,c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )z'" )Ústrip)Ú.0r   s     r    ú
<listcomp>z5TestCUDAGufunc.test_invalid_flags.<locals>.<listcomp>  s"   € Ð0Ð0Ð0 Q�—’˜‘”Ð0Ð0Ð0r"   r±   r²   )rª   r«   r   r   r   rœ   r¬   r™   r�   rµ   ÚsplitÚset)r5   r¨   r­   Úheadr†   Úitemss         r    Útest_invalid_flagsz!TestCUDAGufunc.test_invalid_flags  s‹  € ð	ð 	ð 	ð ×Ò�yÑ)Ô)ð 	E¨Vð@�K��g a a aœj­'°!°!°!¬*Ñ5Ô5Ð6¸
Ø%¨T¸ð@ñ @ô @Ø@CñEô Eð Eð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð AˆÝ�&Ô"Ñ#Ô#ˆØ×Ò˜˜Z�c $™iœi˜Zœ¨$Ñ/Ô/Ð/Ø•C˜‘I”I�J�J”×%Ò%Ñ'Ô'×-Ò-¨cÑ2Ô2ˆØ0Ð0¨%Ð0Ñ0Ô0ˆØ×Ò�˜g wÐ/Ñ0Ô0µ#°e±*´*Ñ=Ô=Ð=Ð=Ð=s   žAA1Á1A5Á8A5c                 ó¦  — t          t          t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        x}}|                      t          ¦  «        5 } ||||¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}|                      t          |j	        ¦  «        |¦  «         d S )	Nr^   r	   r   c                 ó   — d S r`   r€   )ÚinprW   s     r    r¨   z2TestCUDAGufunc.test_duplicated_output.<locals>.foo  s   € àˆDr"   rG   r+   rf   z<cannot specify argument 'out' as both positional and keyword)
r   r   r   r.   r–   rª   Ú
ValueErrorr™   rœ   r¬   )r5   r¨   r¿   rW   r­   r†   s         r    Útest_duplicated_outputz%TestCUDAGufunc.test_duplicated_output  s  € Ý	•d�7 1 1 1œ:¥w¨q¨q¨q¤zÑ2Ô2Ð3°ZÈÐ	OÑ	OÔ	Oð	ð 	ñ 
PÔ	Oð	õ ”H˜R¥r¤zÐ2Ñ2Ô2Ð2ˆˆcØ×Ò�zÑ*Ô*ð 	#¨fØˆC��S˜cÐ"Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð MˆØ×Ò�˜VÔ-Ñ.Ô.°Ñ4Ô4Ð4Ð4Ð4s   ÂBÂB Â#B c                 ód  — t          t          d d …         t          d d …         t          d d …         fgdd¬¦  «        d„ ¦   «         } |||¦  «        }t          j        t          j        |¦  «        t          j        |¦  «        z  d¬¦  «        }t          j                             ||¦  «         d S )Nz(n),(n)->()r	   r   c                 óz   — d}t          t          | ¦  «        ¦  «        D ]}|| |         ||         z  z  }Œ||d<   d S r   )r   r�   )ru   rv   ÚrÚsr   s        r    Ú	gu_reducez1TestCUDAGufunc.check_tuple_arg.<locals>.gu_reduce  sI   € ð ˆAÝ�3˜q™6œ6‘]”]ð !ð !�Ø�Q�q”T˜A˜aœD‘[Ñ ��ØˆAˆa‰DˆDˆDr"   rI   )Úaxis)r   r   r.   ÚsumÚasarrayrL   Úassert_equal)r5   r�   r}   rÆ   rÄ   Úexpecteds         r    Úcheck_tuple_argzTestCUDAGufunc.check_tuple_arg  s®   € Ý	•w˜q˜q˜q”z¥7¨1¨1¨1¤:­w°q°q°q¬zÐ:Ð;¸]Ø"ð
$ñ 
$ô 
$ð	ð 	ñ
$ô 
$ð	ð ˆI�a˜‰OŒOˆÝ”6�"œ* Q™-œ-­"¬*°Q©-¬-Ñ7¸aÐ@Ñ@Ô@ˆÝ
Œ
×Ò ¨!Ñ,Ô,Ð,Ð,Ð,r"   c                 ó:   — d}d}|                       ||¦  «         d S )N)©ç      ð?ç       @ç      @©ç      @ç      @ç      @)©ç      ø?ç      @ç      @©ç      @ç      @ç      @)rÌ   ©r5   r�   r}   s      r    Útest_tuple_of_tuple_argz&TestCUDAGufunc.test_tuple_of_tuple_arg+  s,   € ðˆðˆà×Ò˜Q Ñ"Ô"Ð"Ð"Ð"r"   c                 óÂ   — t          dd¦  «        } |ddd¬¦  «         |ddd¬¦  «        f} |d	d
d¬¦  «         |ddd¬¦  «        f}|                      ||¦  «         d S )NÚPoint©ru   rv   ÚzrÏ   rÐ   rÑ   rÓ   rÔ   rÕ   r×   rØ   rÙ   rÛ   rÜ   rÝ   )r   rÌ   )r5   rá   r�   r}   s       r    Útest_tuple_of_namedtuple_argz+TestCUDAGufunc.test_tuple_of_namedtuple_arg2  s‹   € Ý˜7 OÑ4Ô4ˆØˆU�S˜C 3Ð'Ñ'Ô'ØˆU�S˜C 3Ð'Ñ'Ô'ð)ˆàˆU�S˜C 3Ð'Ñ'Ô'ØˆU�S˜C 3Ð'Ñ'Ô'ð)ˆà×Ò˜Q Ñ"Ô"Ð"Ð"Ð"r"   c                 óÒ   — t          j        d¦  «        t          j        d¦  «        f}t          j        d¦  «        t          j        d¦  «        f}|                      ||¦  «         d S )NrÎ   rÒ   rÖ   rÚ   )r.   rÉ   rÌ   rÞ   s      r    Útest_tuple_of_array_argz&TestCUDAGufunc.test_tuple_of_array_arg:  s`   € ÝŒZ˜Ñ(Ô(ÝŒZ˜Ñ(Ô(ð*ˆåŒZ˜Ñ(Ô(ÝŒZ˜Ñ(Ô(ð*ˆà×Ò˜Q Ñ"Ô"Ð"Ð"Ð"r"   c                 óX   — t          ¦   «         }|                      |j        d¦  «         d S )Nr!   )r$   r™   Ú__name__)r5   r6   s     r    Útest_gufunc_namezTestCUDAGufunc.test_gufunc_nameA  s+   € Ý'Ñ)Ô)ˆØ×Ò˜œ¨,Ñ7Ô7Ð7Ð7Ð7r"   c           	      ór  — |                       t          ¦  «        5 }t          t          t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }d d d ¦  «         n# 1 swxY w Y   t	          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         d S )Nz(m)->(m)r	   r   c                 ó   — d S r`   r€   )ru   rv   s     r    Úfz.TestCUDAGufunc.test_bad_return_type.<locals>.fG  s   € à�r"   z+guvectorized functions cannot return valueszspecifies int32 return type)rª   r«   r   r   rœ   r¬   r›   )r5   Úterì   r†   s       r    Útest_bad_return_typez#TestCUDAGufunc.test_bad_return_typeE  sð   € Ø×Ò�yÑ)Ô)ð 	¨RÝ�%¥ a a a¤­%°°°¬(Ñ3Ô3Ð4°jÈÐPÑPÔPðð ñ QÔPðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 �"”,ÑÔˆØ�ŠÐCÀSÑIÔIÐIØ�ŠÐ3°SÑ9Ô9Ð9Ð9Ð9s   ›AA,Á,A0Á3A0c                 ó  — t          t          d d …         t          d d …         t          d d …         fgdd¬¦  «        d„ ¦   «         }t          j        d¦  «        }|                      t
          ¦  «        5 } ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      t
          ¦  «        5 } |||||¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d	|¦  «         d S )
Nz(m),(m)->(m)r	   r   c                 ó   — d S r`   r€   râ   s      r    rì   z;TestCUDAGufunc.test_incorrect_number_of_pos_args.<locals>.fP  ó	   € ð ˆDr"   r,   ú%gufunc accepts 2 positional argumentszor 3 positional argumentsúGot 1 positional argument.zGot 4 positional arguments.©	r   r   r.   r/   rª   r«   rœ   r¬   r›   ©r5   rì   Úarrrí   r†   s        r    Ú!test_incorrect_number_of_pos_argsz0TestCUDAGufunc.test_incorrect_number_of_pos_argsO  sþ  € Ý	•u˜Q˜Q˜Q”x¥ q q q¤­5°°°¬8Ð4Ð5Ø#¨Fð
4ñ 
4ô 
4ð	ð 	ñ
4ô 
4ð	õ Œi˜‰lŒlˆð ×Ò�yÑ)Ô)ð 	¨RØˆAˆc‰FŒFˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �"”,ÑÔˆØ�ŠÐ=¸sÑCÔCÐCØ�ŠÐ1°3Ñ7Ô7Ð7Ø�ŠÐ2°CÑ8Ô8Ð8ð ×Ò�yÑ)Ô)ð 	"¨RØˆAˆc�3˜˜SÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ �"”,ÑÔˆØ�ŠÐ=¸sÑCÔCÐCØ�ŠÐ1°3Ñ7Ô7Ð7Ø�ŠÐ3°SÑ9Ô9Ð9Ð9Ð9s$   Á5BÂBÂBÄD#Ä#D'Ä*D'N)rè   Ú
__module__Ú__qualname__r9   r>   rA   rE   rT   r\   rj   rm   rq   rz   r‡   rŸ   r¤   r®   r¼   rÁ   rÌ   rß   rä   ræ   ré   rî   r÷   r€   r"   r    r&   r&      ss  € € € € € ð.ð .ð .ð.ð .ð .ð .ð .ð .ð
.ð 
.ð 
.ð/ð /ð /ð.ð .ð .ð0)ð )ð )ð+ð +ð +ð+ð +ð +ð+ð +ð +ð!ð !ð !ð(Bð Bð Bð&,ð ,ð ,ð&Nð Nð Nð>ð >ð >ð
5ð 
5ð 
5ð-ð -ð -ð#ð #ð #ð#ð #ð #ð#ð #ð #ð8ð 8ð 8ð:ð :ð :ð:ð :ð :ð :ð :r"   r&   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestMultipleOutputsc           	      óÚ  — t          t          t          d d …         t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        dz   }t          j        |¦  «        }t          j        |¦  «        } ||||¦  «         t          j                             ||¦  «         t          j                             ||¦  «         d S )Nú(x)->(x),(x)r	   r   c                 ó`   — t          |j        ¦  «        D ]}| |         ||<   | |         ||<   Œd S r`   ra   ©r   r   r   r   s       r    rd   zKTestMultipleOutputs.test_multiple_outputs_same_type_passed_in.<locals>.copym  sA   € õ ˜1œ6‘]”]ð ð �Ø˜”t��!‘Ø˜”t��!‘�ðð r"   rG   r+   rI   rg   )r5   rd   r   r   r   s        r    Ú)test_multiple_outputs_same_type_passed_inz=TestMultipleOutputs.test_multiple_outputs_same_type_passed_inl  sÞ   € Ý	•d�7 1 1 1œ:¥w¨q¨q¨q¤zµ7¸1¸1¸1´:Ñ>Ô>Ð?Ø#Ø"ð
$ñ 
$ô 
$ð	ð 	ñ
$ô 
$ð	õ
 ŒI�b¥¤
Ð+Ñ+Ô+¨aÑ/ˆÝŒM˜!ÑÔˆÝŒM˜!ÑÔˆØˆˆQ��1‰ŒˆÝ
Œ
×"Ò" 1 aÑ(Ô(Ð(Ý
Œ
×"Ò" 1 aÑ(Ô(Ð(Ð(Ð(r"   c           	      óà  — t          t          t          d d …         t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        dz   }t          j        |¦  «        }t          j        |¦  «        } ||||¦  «         t          j                             ||¦  «         t          j                             |dz  |¦  «         d S )	Nrý   r	   r   c                 óf   — t          |j        ¦  «        D ]}| |         ||<   | |         dz  ||<   Œd S ©Nr)   ra   rÿ   s       r    Úcopy_and_doublezRTestMultipleOutputs.test_multiple_outputs_distinct_values.<locals>.copy_and_double~  óE   € õ ˜1œ6‘]”]ð  ð  �Ø˜”t��!‘Ø˜”t˜a‘x��!‘�ð ð  r"   rG   r+   rI   r)   rg   ©r5   r  r   r   r   s        r    Ú%test_multiple_outputs_distinct_valuesz9TestMultipleOutputs.test_multiple_outputs_distinct_values|  så   € å	•d�7 1 1 1œ:¥w¨q¨q¨q¤zµ7¸1¸1¸1´:Ñ>Ô>Ð?Ø#Ø"ð
$ñ 
$ô 
$ð	 ð 	 ñ
$ô 
$ð	 õ
 ŒI�b¥¤
Ð+Ñ+Ô+¨aÑ/ˆÝŒM˜!ÑÔˆÝŒM˜!ÑÔˆØˆ˜˜1˜aÑ Ô Ð Ý
Œ
×"Ò" 1 aÑ(Ô(Ð(Ý
Œ
×"Ò" 1 q¡5¨!Ñ,Ô,Ð,Ð,Ð,r"   c           	      ó’  — t          t          t          d d …         t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t          j        dt          j        ¬¦  «        dz   } ||¦  «        \  }}t          j                             ||¦  «         t          j                             |dz  |¦  «         d S )	Nrý   r	   r   c                 óf   — t          |j        ¦  «        D ]}| |         ||<   | |         dz  ||<   Œd S r  ra   rÿ   s       r    r  zLTestMultipleOutputs.test_multiple_output_allocation.<locals>.copy_and_doubleŽ  r  r"   rG   r+   rI   r)   )r   r   r   r.   r/   rL   rM   r  s        r    Útest_multiple_output_allocationz3TestMultipleOutputs.test_multiple_output_allocation�  sÆ   € Ý	•d�7 1 1 1œ:¥w¨q¨q¨q¤zµ7¸1¸1¸1´:Ñ>Ô>Ð?Ø#Ø"ð
$ñ 
$ô 
$ð	 ð 	 ñ
$ô 
$ð	 õ
 ŒI�b¥¤
Ð+Ñ+Ô+¨aÑ/ˆØˆ˜qÑ!Ô!‰ˆˆ1Ý
Œ
×"Ò" 1 aÑ(Ô(Ð(Ý
Œ
×"Ò" 1 q¡5¨!Ñ,Ô,Ð,Ð,Ð,r"   c           	      ó  — t          t          t          d d …         t          d d …         t          d d …         ¦  «        gdd¬¦  «        d„ ¦   «         }t	          j        dt          j        ¬¦  «        dz   }t	          j        |¦  «        }t	          j        |t          j        ¬¦  «        } ||||¦  «         t          j                             ||¦  «         t          j                             |t	          j        d¦  «        z  |¦  «         d S )	Nrý   r	   r   c                 óf   — t          |j        ¦  «        D ]}| |         ||<   | |         dz  ||<   Œd S )Nr×   ra   rÿ   s       r    Úcopy_and_multiplyzJTestMultipleOutputs.test_multiple_output_dtypes.<locals>.copy_and_multiply�  sE   € õ ˜1œ6‘]”]ð "ð "�Ø˜”t��!‘Ø˜”t˜c‘z��!‘�ð"ð "r"   rG   r+   rI   r×   )	r   r   r   r   r.   r/   rh   rL   rM   )r5   r  r   r   r   s        r    Útest_multiple_output_dtypesz/TestMultipleOutputs.test_multiple_output_dtypes›  sö   € å	•d�5   œ8¥U¨1¨1¨1¤X­w°q°q°q¬zÑ:Ô:Ð;Ø#Ø"ð
$ñ 
$ô 
$ð	"ð 	"ñ
$ô 
$ð	"õ
 ŒI�b¥¤Ð)Ñ)Ô)¨AÑ-ˆÝŒM˜!ÑÔˆÝŒM˜!¥2¤:Ð.Ñ.Ô.ˆØÐ˜!˜Q Ñ"Ô"Ð"Ý
Œ
×"Ò" 1 aÑ(Ô(Ð(Ý
Œ
×"Ò" 1¥r¤z°#¡¤Ñ#6¸Ñ:Ô:Ð:Ð:Ð:r"   c                 ó*  — t          t          d d …         t          d d …         t          d d …         t          d d …         fgdd¬¦  «        d„ ¦   «         }t          j        d¦  «        }|                      t
          ¦  «        5 } ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      t
          ¦  «        5 } ||||||¦  «         d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d	|¦  «         d S )
Nz(m),(m)->(m),(m)r	   r   c                 ó   — d S r`   r€   )ru   rv   rã   rž   s       r    rì   z@TestMultipleOutputs.test_incorrect_number_of_pos_args.<locals>.f­  rñ   r"   r,   rò   zor 4 positional argumentsró   zGot 5 positional arguments.rô   rõ   s        r    r÷   z5TestMultipleOutputs.test_incorrect_number_of_pos_args¬  s
  € Ý	•u˜Q˜Q˜Q”x¥ q q q¤­5°°°¬8µU¸1¸1¸1´XÐ>Ð?Ø'°ð
8ñ 
8ô 
8ð	ð 	ñ
8ô 
8ð	õ Œi˜‰lŒlˆð ×Ò�yÑ)Ô)ð 	¨RØˆAˆc‰FŒFˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �"”,ÑÔˆØ�ŠÐ=¸sÑCÔCÐCØ�ŠÐ1°3Ñ7Ô7Ð7Ø�ŠÐ2°CÑ8Ô8Ð8ð ×Ò�yÑ)Ô)ð 	'¨RØˆAˆc�3˜˜S #Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'õ �"”,ÑÔˆØ�ŠÐ=¸sÑCÔCÐCØ�ŠÐ1°3Ñ7Ô7Ð7Ø�ŠÐ3°SÑ9Ô9Ð9Ð9Ð9s$   ÂBÂBÂ"BÄD2Ä2D6Ä9D6N)rè   rø   rù   r   r  r
  r  r÷   r€   r"   r    rû   rû   j  s_   € € € € € ð)ð )ð )ð -ð -ð -ð"-ð -ð -ð;ð ;ð ;ð":ð :ð :ð :ð :r"   rû   Ú__main__)Únumpyr.   Úcollectionsr   Únumbar   r   r   r   r   r	   Únumba.cuda.testingr
   r   Úunittestr—   Únumba.core.errorsr   r   Únumba.tests.supportr   r$   r&   rû   rè   Úmainr€   r"   r    ú<module>r     s”  ðØ Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø €€€Ø €€€Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ /Ð /Ð /Ð /Ð /Ð /ð ")ð ð ð ð ð  €Ð9Ñ:Ô:ðH:ð H:ð H:ð H:ð H:�\ñ H:ô H:ñ ;Ô:ðH:ðV
 €Ð9Ñ:Ô:ðY:ð Y:ð Y:ð Y:ð Y:˜,ñ Y:ô Y:ñ ;Ô:ðY:ðx ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr"   