U
    9%e<
                     @   s   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZmZmZ d#d
dZdd ZG dd deZdd Zdd Zdd Zdd Zdd ZG dd deZeZd$dd Zed!d" ZdS )%z
Contains CUDA API functions
    )contextmanager   )require_contextresetgpusFakeCUDAKernel)is_signaturewarn   )InOutInOutc                 C   s   | dkst dd S )Nr   z/Only a single device supported by the simulator)AssertionError)dev r   W/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/cuda/simulator/api.pyselect_device   s    r   c                   C   s   dS NTr   r   r   r   r   is_float16_supported   s    r   c                   @   s$   e Zd ZdZedd Zdd ZdS )streamz
    The stream API is supported in the simulator - however, all execution
    occurs synchronously, so synchronization requires no operation.
    c                 c   s
   d V  d S Nr   selfr   r   r   auto_synchronize   s    zstream.auto_synchronizec                 C   s   d S r   r   r   r   r   r   synchronize!   s    zstream.synchronizeN)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s   
r   c                   C   s   d S r   r   r   r   r   r   r   %   s    r   c                   C   s
   dt _d S r   )r   closedr   r   r   r   close)   s    r"   c                  O   s   d S r   r   )argskwargsr   r   r   declare_device-   s    r%   c                   C   s$   t d t dd  t dd  d S )NzFound 1 CUDA deviceszid %d    %20s %40s)r   Z	SIMULATORz[SUPPORTED]z	%40s: 5.0zcompute capability)printr   r   r   r   detect1   s    r'   c                   C   s   t S r   )r   r   r   r   r   list_devices7   s    r(   c                   @   s4   e Zd ZdZdddZdddZdd Zd	d
 ZdS )Eventz
    The simulator supports the event API, but they do not record timing info,
    and all simulation is synchronous. Execution time is not recorded.
    r   c                 C   s   d S r   r   r   r   r   r   r   recordB   s    zEvent.recordc                 C   s   d S r   r   r*   r   r   r   waitE   s    z
Event.waitc                 C   s   d S r   r   r   r   r   r   r   H   s    zEvent.synchronizec                 C   s   t d dS )NzSimulator timings are bogusg        r
   )r   eventr   r   r   elapsed_timeK   s    zEvent.elapsed_timeN)r   )r   )r   r   r   r    r+   r,   r   r.   r   r   r   r   r)   =   s
   

r)   NFTc                    sX   |rt d|d k	rt d| d ks6t| s6t| trJ fdd}|S t|  dS )Nz)bounds checking is not supported for CUDAz Cannot link PTX in the simulatorc                    s   t |  dS )N)devicefastmathdebugr   )fnr1   r/   r0   r   r   
jitwrapperb   s
    zjit.<locals>.jitwrapper)r/   r1   )NotImplementedErrorr	   
isinstancelistr   )Zfunc_or_sigr/   r1   Zargtypesinlinerestyper0   linkZboundscheckoptcacher4   r   r3   r   jitS   s    r=   c                   c   s
   d V  d S r   r   r   r   r   r   defer_cleanupk   s    r>   )r   )NFFNFNFNNTN)r    
contextlibr   Zcudadrv.devicesr   r   r   Zkernelr   Znumba.core.sigutilsr	   warningsr   r#   r   r   r   r   r   objectr   r   r"   r%   r'   r(   r)   r-   r=   r>   r   r   r   r   <module>   s6   
             
