o
    ¦¸¢iÿ  ã                   @   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   úc/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/numba/cuda/tests/cudadrv/test_runtime.pyÚset_visible_devices_and_check	   s   
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   r0   r3   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ÚassertNotEqualr1   )r)   r	   r;   Úctxr   ÚpÚvisible_gpu_countr   r   r   Ú%test_visible_devices_set_after_import/   s    




z8TestVisibleDevices.test_visible_devices_set_after_importN)r4   r5   r6   rH   r   r   r   r   r7   .   s    r7   Ú__main__)r>   r   Ú
numba.corer   Únumba.cuda.cudadrv.runtimer   Únumba.cuda.testingr   r   r   Úunittest.mockr   r   ÚENABLE_CUDASIMr$   ÚTestCaser    r7   r4   Úmainr   r   r   r   Ú<module>   s    &ÿ