o
    Y۷i4                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ edG dd de jZ	edG dd de jZ
edG d	d
 d
e jZedG dd de jZedG dd de jZedkrce   dS dS )    N)Array)skip_on_cudasimz/Tests internals of the CUDA driver device arrayc                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestSlicingc                 C   sR   d}|D ]"}|j | |j | kr&|jdkr|jdkrq| d|j |j f  qd S )N)C_CONTIGUOUSF_CONTIGUOUSr   z*contiguous flag mismatch:
got=%s
expect=%s)flagssizefail)selfarrnparrattrsattr r   ]/home/ubuntu/vllm_env/lib/python3.10/site-packages/numba/cuda/tests/nocuda/test_dummyarray.pyassertSameContig   s   
zTestSlicing.assertSameContigc                 C   s   t d}td|j|j|jj}| || d}|D ]$}||d  }||d  }| || | 	|j|j | 	|j|j qd S N   r   )r         
npemptyr   	from_descshapestridesdtypeitemsizer   assertEqualr
   r   r   xxxexpectgotr   r   r   test_slice0_1d   s   
zTestSlicing.test_slice0_1dc                 C   sx   t d}td|j|j|jj}d}|D ]$}|d | }|d | }| || | 	|j|j | 	|j|j qd S r   r   r!   r   r   r   test_slice1_1d&   s   
zTestSlicing.test_slice1_1dc                 C   s   t d}td|j|j|jj}d}t	||D ]&\}}||| }||| }| 
|| | |j|j | |j|j qd S r   r   r   r   r   r   r   r   r   	itertoolsproductr   r    )r
   r   r   r"   r#   yr$   r%   r   r   r   test_slice2_1d2   s   
zTestSlicing.test_slice2_1dc                 C   s   t d}td|j|j|jj}d}|D ]$}||d  }||d  }| || | 	|j|j | 	|j|j qt
||D ].\}}||d |d f }||d |d f }| || | 	|j|j | 	|j|j q@d S )Nr      r   )r   r   r   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_slice0_2d@   s$   
zTestSlicing.test_slice0_2dc                 C   s   t d}td|j|j|jj}d}|D ]$}|d | }|d | }| |j|j | |j|j | 	|| qt
||D ].\}}|d |d |f }|d |d |f }| |j|j | |j|j | 	|| q@d S Nr-   r   )r   r   r   )r   r   r   r   r   r   r   r   r    r   r)   r*   r/   r   r   r   test_slice1_2dS   s$   
zTestSlicing.test_slice1_2dc                 C   s  t d}td|j|j|jj}d}t	||||D ]0\}}}}|||||f }|||||f }	| 
|	| | |	j|j | |	j|j qt	||D ].\}
}|||||f }|||||f }	| 
|	| | |	j|j | |	j|j qRd S r1   r(   )r
   r   r   r"   stuvr$   r%   r#   r+   r   r   r   test_slice2_2df   s$   
zTestSlicing.test_slice2_2dc                 C   s|   t d}td|j|j|jj}d}|D ]&}|d d | }|d d | }| || | 	|j|j | 	|j|j qd S )Nr   r   r   r   r   r   r   r!   r   r   r   test_strided_1d{   s   
zTestSlicing.test_strided_1dc                 C   s   t d}td|j|j|jj}d}t	||D ]2\}}|d d |d d |f }|d d |d d |f }| 
|| | |j|j | |j|j qd S )Nr-   r   r8   r(   )r
   r   r   r"   abr$   r%   r   r   r   test_strided_2d   s   
zTestSlicing.test_strided_2dc           	      C   s   t d}td|j|j|jj}d}t	|||D ];\}}}|d d |d d |d d |f }|d d |d d |d d |f }| 
|| | |j|j | |j|j qd S )N)r   r.      r   r8   r(   )	r
   r   r   r"   r:   r;   cr$   r%   r   r   r   test_strided_3d   s   
  zTestSlicing.test_strided_3dc                 C   sb   t d}t j|dd}td|j|j|j}| |j	d |j	d  | |j	d |j	d  d S )N)r   r      )r   r   r   )axesr   r   r   )
r   r   	transposer   r   r   r   r   r    r   )r
   zr   r   r   r   test_issue_2766   s
   
zTestSlicing.test_issue_2766N)__name__
__module____qualname__r   r&   r'   r,   r0   r2   r7   r9   r<   r?   rD   r   r   r   r   r      s    r   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestReshapec                 C   b   t d}td|j|j|jj}|dd}|ddd }| 	|j|j | 	|j|j d S )Nr-   r   r.   r   
r   r   r   r   r   r   r   r   reshaper    r
   r   r   r$   r%   r   r   r   test_reshape_2d2d      
zTestReshape.test_reshape_2d2dc                 C   ^   t d}td|j|j|jj}|d}|dd }| 	|j|j | 	|j|j d S )Nr-   r      rJ   rL   r   r   r   test_reshape_2d1d      

zTestReshape.test_reshape_2d1dc                 C   f   t d}td|j|j|jj}|ddd}|dddd }| 	|j|j | 	|j|j d S )Nr@   r   r.   r   r.   r@   r   rJ   rL   r   r   r   test_reshape_3d3d      
zTestReshape.test_reshape_3d3dc                 C   rI   )NrT   r      r.   rJ   rL   r   r   r   test_reshape_3d2d   rN   zTestReshape.test_reshape_3d2dc                 C   rO   )NrT   r   <   rJ   rL   r   r   r   test_reshape_3d1d   rR   zTestReshape.test_reshape_3d1dc                 C   rI   )Nr-   r   r   r   rJ   rL   r   r   r   test_reshape_infer2d2d   rN   z"TestReshape.test_reshape_infer2d2dc                 C   rO   )Nr-   r   r   rJ   rL   r   r   r   test_reshape_infer2d1d   rR   z"TestReshape.test_reshape_infer2d1dc                 C   rS   )NrT   r   r.   r   r   rJ   rL   r   r   r   test_reshape_infer3d3d   rV   z"TestReshape.test_reshape_infer3d3dc                 C   rI   )NrT   r   r@   r   rJ   rL   r   r   r   test_reshape_infer3d2d   rN   z"TestReshape.test_reshape_infer3d2dc                 C   rO   )NrT   r   r   rJ   rL   r   r   r   test_reshape_infer3d1d   rR   z"TestReshape.test_reshape_infer3d1dc                 C   sp   t d}td|j|j|jj}| t	}|
ddd W d    n1 s(w   Y  | dt|j d S )NrT   r   r   r@   z&can only specify one unknown dimensionr   r   r   r   r   r   r   r   assertRaises
ValueErrorrK   assertInstr	exception)r
   r   r   raisesr   r   r   test_reshape_infer_two_unknowns  s   
z+TestReshape.test_reshape_infer_two_unknownsc                 C   sr   t d}td|j|j|jj}| t	}|
dd W d    n1 s'w   Y  d}| |t|j d S )NrT   r   r      z.cannot infer valid shape for unknown dimensionr`   )r
   r   r   rf   expected_messager   r   r    test_reshape_infer_invalid_shape  s   
z,TestReshape.test_reshape_infer_invalid_shapeN)rE   rF   rG   rM   rQ   rU   rX   rZ   r[   r\   r]   r^   r_   rg   rj   r   r   r   r   rH      s    										
rH   c                   @   s   e Zd Zdd Zdd ZdS )TestSqueezec                    sz   t d}td|j|j|jj} fdd}||| || d |  dD ]}||j|dd |j|d q)d S )Nr   r   r   r   r   r@   r   c                    s$     | j|j   | j|j d S )N)r    r   r   )arr1arr2r
   r   r   _assert_equal_shape_strides!  s   z=TestSqueeze.test_squeeze.<locals>._assert_equal_shape_strides)r   r   r   )r   r   )r   r   )r   r   )r   r   r   axis)	r   r   r   r   r   r   r   r   squeeze)r
   r   r   rp   rr   r   ro   r   test_squeeze  s   

zTestSqueeze.test_squeezec                 C   s   t d}td|j|j|jj}| t	 |j
dd W d    n1 s'w   Y  | t	 |j
dd W d    d S 1 sCw   Y  d S )Nrl   r   r   rq   )r   r@   )r   r   r   r   r   r   r   r   ra   rb   rs   )r
   r   r   r   r   r   test_squeeze_invalid_axis+  s   
"z%TestSqueeze.test_squeeze_invalid_axisN)rE   rF   rG   rt   ru   r   r   r   r   rk     s    rk   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestExtentc                 C   J   t d}td|j|j|jj}|j\}}| 	|| |j
|jj  d S Nr   r   r   r   r   r   r   r   r   r   extentr    r   r
   r   r   r3   er   r   r   test_extent_1d8     

zTestExtent.test_extent_1dc                 C   rw   )Nr-   r   ry   r{   r   r   r   test_extent_2d?  r~   zTestExtent.test_extent_2dc                 C   sB   t d}td|j|j|jj}t|	 \}| 
||j d S rx   )r   r   r   r   r   r   r   r   listiter_contiguous_extentr    rz   r
   r   r   extr   r   r   test_extent_iter_1dF  s   
zTestExtent.test_extent_iter_1dc                 C   sd   t d}td|j|j|jj}t|	 \}| 
||j | 
tt|d d d 	 d d S )Nr-   r   r   )r   r   r   r   r   r   r   r   r   r   r    rz   lenr   r   r   r   test_extent_iter_2dM  s   
&zTestExtent.test_extent_iter_2dN)rE   rF   rG   r}   r   r   r   r   r   r   r   rv   6  s
    rv   c                   @   s   e Zd Zdd ZdS )TestIteratec                 C   s<   d}t |}td|j|j|jj}d}|D ]}|}qd S )Nr.   r   )r   r   r   r   r   r   r   r   )r
   Nr   r   r#   valr   r   r   test_for_loopY  s   
zTestIterate.test_for_loopN)rE   rF   rG   r   r   r   r   r   r   W  s    r   __main__)unittestr)   numpyr   numba.cuda.cudadrv.dummyarrayr   numba.cuda.testingr   TestCaser   rH   rk   rv   r   rE   mainr   r   r   r   <module>   s&     q 