o
    Y۷i>                     @   s   d dl Zd dlmZ d dlmZ d dlmZ d dlmZm	Z	 e
dejfdejdfgZed	G d
d de	ZedkrBe  dS dS )    N)cuda)	transpose)unittest)skip_on_cudasimCUDATestCaseij)      z-Device Array API unsupported in the simulatorc                   @   s0   e Zd Zdd ZdZdd Zdd Zdd	 Zd
S )TestTransposec           	   	   C   s   ddt jfddt jfddt jff}|D ]V\}}}| j|||dA t j|| |d||}t j|| |d||}t|}tj	j
|}t|| || t j| | W d    n1 sdw   Y  qd S )N         i  i   )rowscolsdtyper   )npfloat64
complex128subTestarangereshapezerosr   	to_devicecudadrvdevicearrayfrom_array_liker   copy_to_hosttestingassert_array_equal)	selfvariantsr   r   r   xydxdy r'   \/home/ubuntu/vllm_env/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_transpose.pytest_transpose   s    





zTestTranspose.test_transpose))r
   r	   )   r*   )r*      )r+   r*   )      )r-   r,   )r,   r,   c              	   C   s   | j D ]q\}}| j||d^ tj||ftd}t|D ]+}t|D ]$}|d | |||f _tjdtjd}|	dd| | |||f _
q"q|j}t|}t|}	t||	 |	 }
tj||
 W d    n1 sow   Y  qd S )Nr   r   r   r
   r   r	   )small_variantsr   r   recarrayrecordwith2darrayranger   r   float32r   r   Tr   r   device_array_liker   r   r   r    )r!   r   r   arrr#   r$   r   
transposedd_arrd_transposedhost_transposedr'   r'   r(   test_transpose_record!   s$    


z#TestTranspose.test_transpose_recordc              	   C   s   | j D ]D\}}| j||d1 tjjd||ftjd}|j}t|}t	|}t
|| | }tj|| W d    n1 sBw   Y  qd S )Nr.   r
   )sizer   )r/   r   r   randomrandintbool_r4   r   r   r5   r   r   r   r    )r!   r   r   r6   r7   r8   r9   r:   r'   r'   r(   test_transpose_bool2   s   


z!TestTranspose.test_transpose_boolc                 C   s   t jdt jdd}|d d dd d df j}t|}|d d dd d df j}| |jd | |j	d |
 }t j|| d S )Nx   r   )
      r
   )r   r   )(      )r   r   int64r   r4   r   r   assertEqualshapestridesr   r   r    )r!   aa_view_td_a
d_a_view_t
h_a_view_tr'   r'   r(   test_transpose_view?   s   
z!TestTranspose.test_transpose_viewN)__name__
__module____qualname__r)   r/   r;   r@   rO   r'   r'   r'   r(   r      s    r   __main__)numpyr   numbar   numba.cuda.kernels.transposer   numba.cuda.testingr   r   r   r   int32r3   r1   r   rP   mainr'   r'   r'   r(   <module>   s    
B