o
    8ήc                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ dd Zejr.dZnd	ZG d
d dejZG dd dejeZedkrMe  dS dS )    N)config)runtime)unittestSerialMixinskip_on_cudasim)patchc                 C   sN   zddl m} dd l}d|jd< | t|jj W d S    | d Y d S )Nr   cuda0CUDA_VISIBLE_DEVICES)numbar	   osenvironputlengpuslst)qr	   r    r   L/tmp/pip-target-vg8gfxp4/lib/python/numba/cuda/tests/cudadrv/test_runtime.pyset_visible_devices_and_check	   s   
r   ))r   r   ))	      )
   r   )r      )r   r   )   r   )r   r   )r   r   c                   @   s,   e Zd Zdd Zeddd Zdd ZdS )	TestRuntimec              	   C   sL   t D ]!}tjtd|d | t  W d    n1 sw   Y  qd S )Nget_versionreturn_value)SUPPORTED_VERSIONSr   objectr   
assertTrueis_supported_versionselfvr   r   r   test_is_supported_version_true   s   z*TestRuntime.test_is_supported_version_truez2The simulator always simulates a supported runtimec              	   C   sL   dD ]!}t jtd|d | t  W d    n1 sw   Y  qd S )N))   r   )r      )   r   r   r   )r   r"   r   assertFalser$   r%   r   r   r   test_is_supported_version_false#   s   z+TestRuntime.test_is_supported_version_falsec                 C   s   |  ttj d S )N)assertEqualr!   r   supported_versions)r&   r   r   r   test_supported_versions+   s   z#TestRuntime.test_supported_versionsN)__name__
__module____qualname__r(   r   r-   r0   r   r   r   r   r      s
    
r   c                   @   s   e Zd Zdd ZdS )TestVisibleDevicesc                 C   s   ddl m} t|jjdv r| d tjdr d}| | t	
d}| }|jt|fd}|  z
| }W |  n|  w d	}| j|d
|d | |d d S )Nr   r   )r   r   z This test requires multiple GPUsr   z1Cannot test when CUDA_VISIBLE_DEVICES already setspawn)targetargsz+Error running set_visible_devices_and_checkr   )msgr   )r   r	   r   r   r   skipTestr   r   getmultiprocessingget_contextQueueProcessr   startjoinassertNotEqualr.   )r&   r	   r8   ctxr   pvisible_gpu_countr   r   r   %test_visible_devices_set_after_import0   s    




z8TestVisibleDevices.test_visible_devices_set_after_importN)r1   r2   r3   rE   r   r   r   r   r4   /   s    r4   __main__)r;   r   
numba.corer   numba.cuda.cudadrv.runtimer   numba.cuda.testingr   r   r   unittest.mockr   r   ENABLE_CUDASIMr!   TestCaser   r4   r1   mainr   r   r   r   <module>   s    &