o
    ¦¸¢iW
  ã                   @   st   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r8e ¡  dS dS )é    N)Úskip_on_cudasimÚCUDATestCase)ÚcudaÚfloat64c                 C   s   d| d< d S )Né   r   © )Úxr   r   úg/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_optimization.pyÚkernel_func   ó   r
   c                 C   s   | | | S )Nr   )r   ÚyÚzr   r   r	   Údevice_func   r   r   )Ú__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   sp   t d d d… f}t |¡tƒ}| ¡ }tD ] }| j|d |  ||| ¡ W d   ƒ n1 s0w   Y  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   st   t d d d… f}tj|ddtƒ}| ¡ }tD ] }| j|d |  ||| ¡ W d   ƒ n1 s2w   Y  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   s„   t  t¡}tjdtjd}|d |ƒ tt| ¡  	¡ ƒƒd }t
D ]}| j|d |  ||¡ W d   ƒ n1 s:w   Y  q!d S )Nr   ©Ú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   sŠ   t jddtƒ}tjdtjd}|d |ƒ tt| ¡  	¡ ƒƒd }t
D ]}| j|d |  ||¡ W d   ƒ n1 s=w   Y  q$d 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,   r0   r1   r   r   r   r	   r      s    

r   Ú__main__)Únumpyr%   Únumba.cuda.testingr   r   Únumbar   r   Úunittestr
   r   r   r   r2   Úmainr   r   r   r	   Ú<module>   s    ?ÿ