
    xKg-                        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 eed      Zd Zd	 Z e	d
       ed       G d de
                    Zedk(  r ej,                          yy# e$ r dZY Qw xY w)    N)cuda)skip_on_cudasimskip_under_cuda_memcheckCUDATestCase)ThreadPoolExecutorTFget_contextc                     t         j                  d        fd} t        d      D cg c]*  }t        j                  t	        j
                  d            , }}t	        j
                  d      }|dxx   dz  cc<   t        d      5 }|j                  | |      D ]"  }t        j                  j                  ||       $ 	 d d d        y c c}w # 1 sw Y   y xY w)Nc                     | dxx   dz  cc<   y )Nr       )xs    m/home/alanp/www/video.onchill/myenv/lib/python3.12/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   
   r   r      )max_workers)
r   jitrange	to_devicenparanger   maptestingassert_equal)r   iarraysexpectedearyr   s         @r   check_concurrent_compilingr#      s    	XX  6;2Y?YdnnRYYr]+YF?yy}HQK1K		*a55&)CJJ##C2 * 
+	* @ 
+	*s   /C	8CCc                     	 t                | j                  d        y #  t        j                         }| j                  dj	                  dd|g             Y y xY w)N
 zP================================================================================)r#   put	traceback
format_excjoin)qmsgs     r   spawn_process_entryr-   &   sK    "$ 	
d	.""$	diiXs+,-s	   
 9A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
y)TestMultiThreadCompilingzno concurrent.futuresc                     t                y N)r#   )selfs    r   test_concurrent_compilingz2TestMultiThreadCompiling.test_concurrent_compiling5   s    "$r   zno multiprocessing.get_contextc                    t        j                          t        j                  d      }|j	                         }|j                  t        |f      }|j                          	 |j                         }|j                          |t        |      | j                  |j                  dd       y # |j                          w xY w)Nspawntargetargsr   ztest failed in child process)r   get_current_devicemultiprocessingr   QueueProcessr-   startgetr*   AssertionErrorassertEqualexitcode)r2   ctxr+   perrs        r   !test_spawn_concurrent_compilationz:TestMultiThreadCompiling.test_spawn_concurrent_compilation9   s     	!))'2IIKKK2!K>			%%'CFFH? %%Q(FG FFHs   #B. .C c                 <   d }t        j                  dd      }t        j                  |      }t        j                  |      }t        j                  |||g      }|j                          |j                          t         j                  j                  ||       y )Nc                 *    | j                         |d d  y r1   )copy_to_host)arrouts     r   d2hzITestMultiThreadCompiling.test_invalid_context_error_with_d2h.<locals>.d2hL   s    %%'CFr   r   r   r6   )r   r   
zeros_liker   r   	threadingThreadr=   r*   r   r   )r2   rK   rI   rJ   darrths         r   #test_invalid_context_error_with_d2hz<TestMultiThreadCompiling.test_invalid_context_error_with_d2hK   sp    	( ii1ommC ~~c"Sc{;


	


S)r   c                    d }t        j                  d      }t        j                  |      }t        j                  t        j                  |j
                  |j                              }t        j                  |||g      }|j                          |j                          t         j                  j                  |j                         |       y )Nc                 &    | j                  |       y r1   )copy_to_device)dstsrcs     r   d2dzITestMultiThreadCompiling.test_invalid_context_error_with_d2d.<locals>.d2dX   s    s#r   d   )dtyper6   )r   r   r   r   zerosshaperY   rM   rN   r=   r*   r   r   rH   )r2   rW   rI   commonrO   rP   s         r   #test_invalid_context_error_with_d2dz<TestMultiThreadCompiling.test_invalid_context_error_with_d2dW   s    	$ iin$~~bhhv||6<<HISf~>


	


 1 1 3S9r   N)__name__
__module____qualname__unittestskipIfhas_concurrent_futuresr3   has_mp_get_contextrE   rQ   r]   r   r   r   r/   r/   1   s\     X__//1HI% J% X__++-MNH OH"
*
:r   r/   __main__)r(   rM   r:   numpyr   numbar   numba.cuda.testingr   r   r   ra   concurrent.futuresr   rc   ImportErrorhasattrrd   r#   r-   r/   r^   mainr   r   r   <module>rm      s        . . "5 " _m< 3" /0'(.:| .: ) 1.:b zHMMO q  #"#s   A6 6B ?B 