U
    “Ç-eÿ  ã                   @   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r–e ¡  dS )é    N)Úconfig)Úruntime)ÚunittestÚSerialMixinÚskip_on_cudasim)Úpatchc                 C   sP   z4ddl m} dd l}d|jd< |  t|jjƒ¡ W n   |  d¡ Y nX d S )Nr   ©ÚcudaÚ0ÚCUDA_VISIBLE_DEVICESéÿÿÿÿ)Únumbar	   ÚosÚenvironÚputÚlenÚgpusÚlst)Úqr	   r   © r   úf/var/www/html/Darija-Ai-Train/env/lib/python3.8/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   s8   t D ].}tjtd|d |  t ¡ ¡ W 5 Q R X qd S )NÚget_version©Z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   s8   dD ].}t jtd|d |  t ¡ ¡ W 5 Q R X qd S )N))é
   r   )r   é   )é   r   r!   r"   )r   r$   r   Z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   Z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kr&|  d¡ tj d¡r@d}|  |¡ t	 
d¡}| ¡ }|jt|fd}| ¡  z| ¡ }W 5 | ¡  X 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   ZskipTestr   r   ÚgetÚmultiprocessingZget_contextÚQueueÚProcessr   ÚstartÚjoinZassertNotEqualr/   )r(   r	   r8   Úctxr   ÚpZvisible_gpu_countr   r   r   Ú%test_visible_devices_set_after_import/   s     




z8TestVisibleDevices.test_visible_devices_set_after_importN)r1   r2   r3   rA   r   r   r   r   r4   .   s   r4   Ú__main__)r:   r   Z
numba.corer   Znumba.cuda.cudadrv.runtimer   Znumba.cuda.testingr   r   r   Zunittest.mockr   r   ZENABLE_CUDASIMr#   ZTestCaser    r4   r1   Úmainr   r   r   r   Ú<module>   s   &