U
    Ã9%eW
  ã                   @   sp   d dl Zd dlmZmZ d dlmZmZ d dlZdd„ Z	dd„ Z
dZed	ƒG d
d„ deƒƒZedkrle ¡  dS )é    N)Úskip_on_cudasimÚCUDATestCase)ÚcudaÚfloat64c                 C   s   d| d< d S )Né   r   © )Úxr   r   úh/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_optimization.pyÚkernel_func   s    r
   c                 C   s   | | | S )Nr   )r   ÚyÚzr   r   r	   Údevice_func   s    r   )Z__local_depot0zcall.unizst.param.b64z Simulator does not optimize codec                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestOptimizationc              
   C   s\   t d d d… f}t |¡tƒ}| ¡ }tD ],}| j|d |  ||| ¡ W 5 Q R X q*d S )Nr   ©Úfragment)r   r   Újitr
   Úinspect_asmÚremoved_by_optÚsubTestÚassertNotIn©ÚselfÚsigÚkernelÚptxr   r   r   r	   Útest_eager_opt   s    zTestOptimization.test_eager_optc              
   C   s`   t d d d… f}tj|ddtƒ}| ¡ }tD ],}| j|d |  ||| ¡ W 5 Q R X q.d S )Nr   F©Úoptr   )r   r   r   r
   r   r   r   ÚassertInr   r   r   r	   Útest_eager_noopt!   s    z!TestOptimization.test_eager_nooptc              
   C   sp   t  t¡}tjdtjd}|d |ƒ tt| ¡  	¡ ƒƒd }t
D ](}| j|d |  ||¡ W 5 Q R X qBd S )Nr   ©Zdtype©r   r   r   )r   r   r
   ÚnpÚzerosr   ÚnextÚiterr   Úitemsr   r   r   ©r   r   r   r   r   r   r   r	   Útest_lazy_opt+   s    
zTestOptimization.test_lazy_optc              
   C   sv   t jddtƒ}tjdtjd}|d |ƒ tt| ¡  	¡ ƒƒd }t
D ](}| j|d |  ||¡ W 5 Q R X qHd S )NFr   r   r    r!   r   )r   r   r
   r"   r#   r   r$   r%   r   r&   r   r   r   r'   r   r   r	   Útest_lazy_noopt8   s    z TestOptimization.test_lazy_nooptc                 C   s6   t t t f}tj|ddtƒ}| |¡}|  d|¡ d S )NT)Údeviceú
fma.rn.f64)r   r   r   r   r   r   ©r   r   r*   r   r   r   r	   Útest_device_optE   s    

z TestOptimization.test_device_optc                 C   s8   t t t f}tj|dddtƒ}| |¡}|  d|¡ d S )NTF)r*   r   r+   )r   r   r   r   r   r   r,   r   r   r	   Útest_device_nooptL   s    

z"TestOptimization.test_device_nooptN)	Ú__name__Ú
__module__Ú__qualname__r   r   r(   r)   r-   r.   r   r   r   r	   r      s   

r   Ú__main__)Únumpyr"   Znumba.cuda.testingr   r   Znumbar   r   Zunittestr
   r   r   r   r/   Úmainr   r   r   r	   Ú<module>   s   ?