§
    ƒÛg-  ã                   ó.  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlZ	 d dlmZ dZn# e$ r dZY nw xY w eed¦  «        Zd„ Zd	„ Z e	d
¦  «         ed¦  «         G d„ de
¦  «        ¦   «         ¦   «         Zedk    r ej        ¦   «          dS dS )é    N)Úcuda)Úskip_on_cudasimÚskip_under_cuda_memcheckÚCUDATestCase)ÚThreadPoolExecutorTFÚget_contextc                  ó|  ‡— t           j        d„ ¦   «         Šˆfd„} d„ t          d¦  «        D ¦   «         }t          j        d¦  «        }|dxx         dz  cc<   t          d¬¦  «        5 }|                     | |¦  «        D ]"}t          j                             ||¦  «         Œ#	 d d d ¦  «         d S # 1 swxY w Y   d S )	Nc                 ó&   — | dxx         dz  cc<   d S )Nr   é   © )Úxs    ú_/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_multithreads.pyÚfooz'check_concurrent_compiling.<locals>.foo   s   € à	ˆ!ˆˆŒ�‰	ˆˆ‰ˆˆó    c                 ó*   •—  ‰d         | ¦  «         | S )N)r   r   r   )r   r   s    €r   Úuse_fooz+check_concurrent_compiling.<locals>.use_foo   s   ø€ ØˆˆDŒ	�!‰ŒˆØˆr   c                 óZ   — g | ](}t          j        t          j        d ¦  «        ¦  «        ‘Œ)S )é
   )r   Ú	to_deviceÚnpÚarange)Ú.0Úis     r   ú
<listcomp>z.check_concurrent_compiling.<locals>.<listcomp>   s*   € Ð?Ð?Ð?°�dŒn�RœY r™]œ]Ñ+Ô+Ð?Ð?Ð?r   r   r   r   é   )Úmax_workers)	r   ÚjitÚranger   r   r   ÚmapÚtestingÚassert_equal)r   ÚarraysÚexpectedÚeÚaryr   s        @r   Úcheck_concurrent_compilingr&      s%  ø€ Ý	„Xðð ñ „Xððð ð ð ð ð @Ð?µU¸2±Y´YÐ?Ñ?Ô?€FÝŒy˜‰}Œ}€HØˆQ€K€K„K�1Ñ€K€K�KÝ	¨Ð	*Ñ	*Ô	*ð 3¨aØ—5’5˜ &Ñ)Ô)ð 	3ð 	3ˆCÝŒJ×#Ò# C¨Ñ2Ô2Ð2Ð2ð	3ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3s   Á):B1Â1B5Â8B5c                 óÚ   — 	 t          ¦   «          |                      d ¦  «         d S #  t          j        ¦   «         }|                      d                     dd|g¦  «        ¦  «         Y d S xY w)Nú
Ú zP================================================================================)r&   ÚputÚ	tracebackÚ
format_excÚjoin)ÚqÚmsgs     r   Úspawn_process_entryr0   &   sm   € ðÝ"Ñ$Ô$Ð$ð 	
�Šˆd‰Œˆˆˆøð	.ÝÔ"Ñ$Ô$ˆØ	�Šˆd�iŠi˜˜X sÐ+Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-Ð-øøøs
   ‚' §A A*zHangs cuda-memcheckzdisabled for cudasimc                   ó†   — e Zd Z ej        e d¦  «        d„ ¦   «         Z ej        e d¦  «        d„ ¦   «         Zd„ Z	d„ Z
dS )ÚTestMultiThreadCompilingzno concurrent.futuresc                 ó"   — t          ¦   «          d S ©N)r&   )Úselfs    r   Útest_concurrent_compilingz2TestMultiThreadCompiling.test_concurrent_compiling5   s   € å"Ñ$Ô$Ð$Ð$Ð$r   zno multiprocessing.get_contextc                 ó¾  — t          j        ¦   «          t          j        d¦  «        }|                     ¦   «         }|                     t          |f¬¦  «        }|                     ¦   «          	 |                     ¦   «         }| 	                    ¦   «          n# | 	                    ¦   «          w xY w|�t          |¦  «        ‚|                      |j        dd¦  «         d S )NÚspawn©ÚtargetÚargsr   ztest failed in child process)r   Úget_current_deviceÚmultiprocessingr   ÚQueueÚProcessr0   ÚstartÚgetr-   ÚAssertionErrorÚassertEqualÚexitcode)r5   Úctxr.   ÚpÚerrs        r   Ú!test_spawn_concurrent_compilationz:TestMultiThreadCompiling.test_spawn_concurrent_compilation9   s¼   € õ 	ÔÑ!Ô!Ð!åÔ)¨'Ñ2Ô2ˆà�IŠI‰KŒKˆØ�KŠKÕ2¸!¸ˆKÑ>Ô>ˆØ	�Š‰	Œ	ˆ	ð	Ø—%’%‘'”'ˆCà�FŠF‰HŒHˆHˆHøˆA�FŠF‰HŒHˆHˆHøøøØˆ?Ý  Ñ%Ô%Ð%Ø×Ò˜œ QÐ(FÑGÔGÐGÐGÐGs   Á.B ÂB-c                 óF  — d„ }t          j        dd¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          j        |||g¬¦  «        }|                     ¦   «          |                     ¦   «          t           j	         
                    ||¦  «         d S )Nc                 ó8   — |                       ¦   «         |d d …<   d S r4   )Úcopy_to_host)ÚarrÚouts     r   Úd2hzITestMultiThreadCompiling.test_invalid_context_error_with_d2h.<locals>.d2hL   s   € Ø×%Ò%Ñ'Ô'ˆC���‰FˆFˆFr   r   r   r9   )r   r   Ú
zeros_liker   r   Ú	threadingÚThreadr@   r-   r    r!   )r5   rN   rL   rM   ÚdarrÚths         r   Ú#test_invalid_context_error_with_d2hz<TestMultiThreadCompiling.test_invalid_context_error_with_d2hK   s‘   € ð	(ð 	(ð 	(õ Œi˜˜1‰oŒoˆÝŒm˜CÑ Ô ˆÝŒ~˜cÑ"Ô"ˆÝÔ S°°c¨{Ð;Ñ;Ô;ˆØ
�Š‰
Œ
ˆ
Ø
�Š‰	Œ	ˆ	Ý
Œ
×Ò  SÑ)Ô)Ð)Ð)Ð)r   c                 ó¤  — d„ }t          j        d¦  «        }t          j        |¦  «        }t          j        t          j        |j        |j        ¬¦  «        ¦  «        }t          j        |||g¬¦  «        }| 	                    ¦   «          | 
                    ¦   «          t           j                             |                     ¦   «         |¦  «         d S )Nc                 ó0   — |                       |¦  «         d S r4   )Úcopy_to_device)ÚdstÚsrcs     r   Úd2dzITestMultiThreadCompiling.test_invalid_context_error_with_d2d.<locals>.d2dX   s   € Ø×Ò˜sÑ#Ô#Ð#Ð#Ð#r   éd   )Údtyper9   )r   r   r   r   ÚzerosÚshaper\   rP   rQ   r@   r-   r    r!   rK   )r5   rZ   rL   ÚcommonrR   rS   s         r   Ú#test_invalid_context_error_with_d2dz<TestMultiThreadCompiling.test_invalid_context_error_with_d2dW   s®   € ð	$ð 	$ð 	$õ Œi˜‰nŒnˆÝ” Ñ$Ô$ˆÝŒ~�bœh v¤|¸6¼<ÐHÑHÔHÑIÔIˆÝÔ S°°f¨~Ð>Ñ>Ô>ˆØ
�Š‰
Œ
ˆ
Ø
�Š‰	Œ	ˆ	Ý
Œ
×Ò × 1Ò 1Ñ 3Ô 3°SÑ9Ô9Ð9Ð9Ð9r   N)Ú__name__Ú
__module__Ú__qualname__ÚunittestÚskipIfÚhas_concurrent_futuresr6   Úhas_mp_get_contextrH   rT   r`   r   r   r   r2   r2   1   s•   € € € € € ð €X„_Ð/Ð/Ð1HÑIÔIð%ð %ñ JÔIð%ð €X„_Ð+Ð+Ð-MÑNÔNðHð Hñ OÔNðHð"
*ð 
*ð 
*ð
:ð 
:ð 
:ð 
:ð 
:r   r2   Ú__main__)r+   rP   r=   Únumpyr   Únumbar   Únumba.cuda.testingr   r   r   rd   Úconcurrent.futuresr   rf   ÚImportErrorÚhasattrrg   r&   r0   r2   ra   Úmainr   r   r   ú<module>rp      s  ðØ Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð ð.ð .ð .ð .ð .ð .ð .ð .ð .ð .à €€€ð"Ø5Ð5Ð5Ð5Ð5Ð5ð "ÐÐøð ð #ð #ð #Ø"ÐÐÐð#øøøð �W˜_¨mÑ<Ô<Ð ð3ð 3ð 3ð"ð ð ð ÐÐ/Ñ0Ô0Ø€Ð'Ñ(Ô(ð.:ð .:ð .:ð .:ð .:˜|ñ .:ô .:ñ )Ô(ñ 1Ô0ð.:ðb ˆzÒÐØ€H„M�O„O€O€O€Oð Ðs   ¦/ ¯9¸9