U
    -e
                     @   s   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	m
Z
 d dlmZ G dd deZe
dG dd	 d	eZed
kre  dS )    N)cuda)unittestCUDATestCaseskip_on_cudasimskip_under_cuda_memcheck)captured_stdoutc                   @   s   e Zd Zdd ZdS )TestCudaDetectc              	   C   s>   t  }t  W 5 Q R X | }| d| | d| d S )NFoundzCUDA devices)r   r   detectgetvalueZassertIn)selfoutoutput r   e/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/numba/cuda/tests/cudadrv/test_detect.pytest_cuda_detect   s
    zTestCudaDetect.test_cuda_detectN)__name__
__module____qualname__r   r   r   r   r   r      s   r   zHangs cuda-memcheckc                   @   sB   e Zd Zdd Zdd Zedeej	
d ddd	 Zd
S )TestCUDAFindLibsc                 C   s\   t j|t jt j|d}td|j}z(|  | \}}|	 |	 fW S |  X dS )N)stdoutstderrenvg     r@)NN)

subprocessPopenPIPE	threadingTimerkillcancelstartcommunicatedecode)r   cmdliner   popentimeoutr   errr   r   r   run_cmd   s    
zTestCUDAFindLibs.run_cmdc                 C   s2   t j }t|||< d}tjd|g}| ||S )Nzif 1:
            from numba import cuda
            @cuda.jit('(int64,)')
            def kernel(x):
                pass
            kernel(1,)
            z-c)osenvironcopystrsys
executabler'   )r   ZenvvarZenvvar_valueZenv_copycoder#   r   r   r   run_test_in_separate_process)   s
    
z-TestCUDAFindLibs.run_test_in_separate_processz6Simulator does not hit device library search code pathlinuxz
linux onlyc                 C   sp   ddg}d}|D ]&}t jt jj|}t j|r q8q|dk	rl| d|\}}| |dk	 | |dk	 dS )z
        This tests that the find_libs works as expected in the case of an
        environment variable being used to set the path.
        libZlib64NZNUMBA_CUDA_DRIVER)r(   pathjoinsepexistsr/   
assertTrue)r   ZlocsZlooking_forlr   r&   r   r   r   test_cuda_find_lib_errors6   s    	z*TestCUDAFindLibs.test_cuda_find_lib_errorsN)r   r   r   r'   r/   r   r   ZskipIfr,   platform
startswithr8   r   r   r   r   r      s
   r   __main__)r(   r,   r   r   Znumbar   Znumba.cuda.testingr   r   r   r   Znumba.tests.supportr   r   r   r   mainr   r   r   r   <module>   s   
: