o
    ۾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/ubuntu/.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     