a
    þ
þd>  ã                   @   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r€e ¡  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 ]¬\}}}| j|||d‚ t j|| |d ||¡}t j|| |d ||¡}t |¡}tj	j
 |¡}t||ƒ | |¡ t j | ¡ |¡ W d   ƒ q&1 sÈ0    Y  q&d S )Né   é   é€   i  i   )ÚrowsÚcolsÚdtype©r   )ÚnpÚfloat64Z
complex128ÚsubTestÚarangeÚreshapeÚzerosr   Ú	to_deviceZcudadrvZdevicearrayZfrom_array_liker   Úcopy_to_hostÚtestingÚassert_array_equal)	ÚselfÚvariantsr   r   r   ÚxÚyZdxZdy© r!   úo/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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 ]â\}}| j||d¼ tj||ftd}t|ƒD ]V}t|ƒD ]H}|d | |||f _tjdtjd}| 	dd¡| | |||f _
qDq8|j}t |¡}t |¡}	t||	ƒ |	 ¡ }
tj ||
¡ W d   ƒ q1 sÞ0    Y  qd S )N©r   r   r   r
   r   r	   )Úsmall_variantsr   r   Z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 ]ˆ\}}| j||db tjjd||ftjd}|j}t |¡}t 	|¡}t
||ƒ | ¡ }tj ||¡ W d   ƒ q1 s„0    Y  qd S )Nr(   r
   )Úsizer   )r)   r   r   ÚrandomÚrandintZbool_r-   r   r   r.   r   r   r   r   )r   r   r   r/   r0   r1   r2   r3   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 )Néx   r   )é
   é   r
   )r   r   )é(   é   )r   r   Úint64r   r-   r   r   ÚassertEqualÚshapeÚstridesr   r   r   )r   ÚaZa_view_tZd_aZ
d_a_view_tZ
h_a_view_tr!   r!   r"   Útest_transpose_view?   s    
z!TestTranspose.test_transpose_viewN)Ú__name__Ú
__module__Ú__qualname__r#   r)   r4   r8   rC   r!   r!   r!   r"   r      s
   r   Ú__main__)Únumpyr   Znumbar   Znumba.cuda.kernels.transposer   Znumba.cuda.testingr   r   r   r   Úint32r,   r*   r   rD   Úmainr!   r!   r!   r"   Ú<module>   s   
ÿB