o
    gµ„i´  ã                   @   sP   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r&e 
¡  dS 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Ú
assertTrueÚis_c_contiguousÚis_f_contiguous©ÚselfÚaryÚcaryÚfaryÚdcaryÚdfary© r   ú[/home/kuhnn/.local/lib/python3.10/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 ]&}|j|d}|j|d}| ¡ }|  ||u¡ |  |jd¡ |  	||¡ qd S )Nr    Ú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   s‚   t  d¡}t |¡}|d d d… }|jd d }|jd d }|  ||¡ |  t¡ | ¡  W d   ƒ d S 1 s:w   Y  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 |¡}| ¡ }| ¡ }|  ||u¡ |  |j	d¡ |  
||¡ dD ]+}|j|d}t |¡}|j|d}| ¡ }|  ||u¡ |  |j	d¡ |  
||¡ q6d 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 d   ƒ d S 1 sOw   Y  d S ©Nr    r	   r
   r!   r1   r   )
r   r   r   r   r   r2   r)   r3   r4   r'   ©r   r   r;   r,   r5   r6   r7   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 ]+}|j|d}t |¡}|j|d}| ¡ }|  ||u¡ |  	|j
d¡ |  ||¡ qd S )Nr    r	   r
   r!   ÚFAr$   r&   )r   r   r   r   r'   r   r   r(   r   r)   r*   r+   )r   r   r;   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 d   ƒ d S 1 sRw   Y  d S r=   )r   r   r   r   r   r   r2   r)   r3   r4   r'   r>   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,   Ú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$   rC   rD   r   r   r   Útest_reshape_f‡   s   

zTestArrayAttr.test_reshape_fN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r0   r   r8   r<   r?   rA   rB   rG   rI   r   r   r   r   r      s    


r   Ú__main__)Únumpyr   Únumbar   Únumba.cuda.testingr   r   r   r   rJ   Úmainr   r   r   r   Ú<module>   s     ÿ