o
    8ήc                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZm	Z	 d dl
Z
eedZe jdkZdd ZedG d	d
 d
e	ZedkrBe
  dS dS )    N)cuda)skip_on_cudasimCUDATestCaseget_contextposixc              
   C   s`   ddl m} z
ttd W n |y( } z| | W Y d }~d S d }~ww | d  d S )Nr   )CudaDriverError   )numba.cuda.cudadrv.errorr   r   	to_devicenparangeput)qr   e r   S/tmp/pip-target-vg8gfxp4/lib/python/numba/cuda/tests/cudapy/test_multiprocessing.py	fork_test   s   r   zdisabled for cudasimc                   @   s,   e Zd Zeedeeddd ZdS )TestMultiprocessingzrequires mp.get_contextzrequires Unixc                 C   s`   t   td}| }|jt|gd}|  | }|	  | 
| | dt| dS )z&
        Test fork detection.
        fork)targetargszCUDA initialized before forkingN)r   current_contextmpr   QueueProcessr   startgetjoinassertIsNotNoneassertInstr)selfctxr   procexcr   r   r   	test_fork   s   

zTestMultiprocessing.test_forkN)__name__
__module____qualname__unittest
skipUnlesshas_mp_get_contextis_unixr%   r   r   r   r   r      s    

r   __main__)osmultiprocessingr   numpyr   numbar   numba.cuda.testingr   r   r)   hasattrr+   namer,   r   r   r&   mainr   r   r   r   <module>   s    


