U
    ?h´  ã                   @   sL   d dl Zd dlmZ d dlmZmZmZ G dd„ deƒZe	dkrHe 
¡  dS )é    N)Úcuda)ÚunittestÚCUDATestCaseÚskip_on_cudasimc                   @   s|   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zed	ƒd
d„ ƒZdd„ Z	ed	ƒdd„ ƒZ
dd„ Zed	ƒdd„ ƒZdd„ Zdd„ ZdS )ÚTestArrayAttrc                 C   st   t  d¡}| dd¡}t  |¡}t |¡}t |¡}|  | ¡ ¡ |  | ¡  ¡ |  | ¡  ¡ |  | ¡ ¡ d S ©Né
   é   é   ©	ÚnpÚarangeÚreshapeÚasfortranarrayr   Ú	to_deviceÚ
assertTrueZis_c_contiguousZis_f_contiguous©ÚselfÚaryZcaryZfaryZdcaryZdfary© r   úZ/var/www/html/venv/lib/python3.8/site-packages/numba/cuda/tests/cudadrv/test_array_attr.pyÚtest_contigous_2d   s    



zTestArrayAttr.test_contigous_2dc                 C   sv   t  d¡}| ddd¡}t  |¡}t |¡}t |¡}|  | ¡ ¡ |  | ¡  ¡ |  | ¡  ¡ |  | ¡ ¡ d S )Né   r	   r
   r   r   r   r   r   Útest_contigous_3d   s    



zTestArrayAttr.test_contigous_3dc                 C   sx   t  d¡}| dddd¡}t  |¡}t |¡}t |¡}|  | ¡ ¡ |  | ¡  ¡ |  | ¡  ¡ |  | ¡ ¡ d S )Né<   r	   r
   é   r   r   r   r   r   Útest_contigous_4d    s    



zTestArrayAttr.test_contigous_4dc                 C   sj   t  d¡}t |¡}dD ]L}|j|d}|j|d}| ¡ }|  ||k	¡ |  |jd¡ |  	||¡ qd S )Nr   ZCFA©Úorderé   )
r   r   r   r   ÚravelÚcopy_to_hostr   ÚassertEqualÚndimÚassertPreciseEqual)r   r   Údaryr   ÚexpectÚdflatÚflatr   r   r   Útest_ravel_1d,   s    

zTestArrayAttr.test_ravel_1dz6CUDA Array Interface is not supported in the simulatorc              	   C   sl   t  d¡}t |¡}|d d d… }|jd d }|jd d }|  ||¡ |  t¡ | ¡  W 5 Q R X d S )Nr   r	   Údatar   )	r   r   r   r   Ú__cuda_array_interface__r"   ÚassertRaisesÚNotImplementedErrorr    )r   r   r%   Ú
darystrideÚ	dary_dataÚddarystride_datar   r   r   Útest_ravel_stride_1d7   s    

z"TestArrayAttr.test_ravel_stride_1dc                 C   sÈ   t  d¡}| dddd¡}|jdd}t |¡}| ¡ }| ¡ }|  ||k	¡ |  |j	d¡ |  
||¡ dD ]V}|j|d}t |¡}|j|d}| ¡ }|  ||k	¡ |  |j	d¡ |  
||¡ qld S )	Nr   r	   r
   r   ÚCr   r   ÚCA)r   r   r   r    r   r   r!   r   r"   r#   r$   )r   r   Úreshapedr&   r%   r'   r(   r   r   r   r   Útest_ravel_cD   s"    


zTestArrayAttr.test_ravel_cc              	   C   s–   t  d¡}| dddd¡}t |¡}|d d d…d d d…d d d…d d d…f }|jd d }|jd d }|  ||¡ |  t¡ | 	¡  W 5 Q R X d S ©Nr   r	   r
   r   r*   r   )
r   r   r   r   r   r+   r"   r,   r-   r    ©r   r   r4   r%   r.   r/   r0   r   r   r   Útest_ravel_stride_cZ   s    

(z!TestArrayAttr.test_ravel_stride_cc                 C   s€   t  d¡}t  | dddd¡¡}dD ]V}|j|d}t |¡}|j|d}| ¡ }|  ||k	¡ |  	|j
d¡ |  ||¡ q$d S )Nr   r	   r
   r   ZFAr   r   )r   r   r   r   r    r   r   r!   r   r"   r#   r$   )r   r   r4   r   r&   r%   r'   r(   r   r   r   Útest_ravel_fg   s    

zTestArrayAttr.test_ravel_fc              	   C   sœ   t  d¡}t  | dddd¡¡}t |¡}|d d d…d d d…d d d…d d d…f }|jd d }|jd d }|  ||¡ |  t	¡ | 
¡  W 5 Q R X d S r6   )r   r   r   r   r   r   r+   r"   r,   r-   r    r7   r   r   r   Útest_ravel_stride_fs   s    

(z!TestArrayAttr.test_ravel_stride_fc                 C   sD   t  d¡}| dd¡}t |¡}| dd¡}| ¡ }|  ||¡ d S r   ©r   r   r   r   r   r!   r$   ©r   r   r&   r%   Zdary_reshapedÚgotr   r   r   Útest_reshape_c   s    

zTestArrayAttr.test_reshape_cc                 C   sL   t  d¡}|jdddd}t |¡}|jdddd}| ¡ }|  ||¡ d S )Nr   r	   r
   ÚFr   r;   r<   r   r   r   Útest_reshape_f‡   s    

zTestArrayAttr.test_reshape_fN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r)   r   r1   r5   r8   r9   r:   r>   r@   r   r   r   r   r      s   


r   Ú__main__)Únumpyr   Znumbar   Znumba.cuda.testingr   r   r   r   rA   Úmainr   r   r   r   Ú<module>   s    