
    J/Ph)                         d dl Zd dlmZmZ d dlmZmZ d dlmZm	Z	 ej
        re	j        e	j        fZne	j        e	j        e	j        fZ G d de          Zedk    r ej                     dS dS )    N)unittestCUDATestCase)skip_on_cudasimskip_unless_cudasim)configcudac                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ed          d             Z ed          d             Zd Z ed          d             ZdS )TestCudaArrayc                 ~   t          j        d          }t          j        |          }|                                }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   d S )Nr   )nparanger   	to_devicecopy_to_hostassertEqualshapesize)selfxdxhxs       b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_array.pytest_gpu_array_zero_lengthz(TestCudaArray.test_gpu_array_zero_length   s    IaLL^A__"(+++)))"(+++)))))    c                     d}t          j        d          j        }t          j        t	          j        d                    j        }|                     ||           |                     ||           d S )N )r   device_arrayr   device_array_liker   ndarrayr   )r   
null_shapeshape1shape2s       r   test_null_shapezTestCudaArray.test_null_shape   sg    
"2&&,'
277=,,,,,,,,r   c           
         t          j        d          d             }t          j        dt          j                  }t          j        d|t          j                  }t          j        d|dd	         t          j        
          } |d         |           |                     t          j        |t          t          d                                         d S )Nzvoid(double[:])c                 ^    t          j        d          }|| j        d         k     r|| |<   d S d S N   r   r   gridr   )r   is     r   kernelz4TestCudaArray.test_gpu_array_strided.<locals>.kernel"   s2    	!A171:~~! ~r   
   dtypeP   )r   bufferr-   	      )r/   r-   )r+   r+   )r   jitr   r   doubler   byte
assertTrueallcloselistrange)r   r*   r   yzs        r   test_gpu_array_stridedz$TestCudaArray.test_gpu_array_strided    s    	#	$	$	 	 
%	$	
 Ib	***JVARW===Jq1R4	:::vqAtE!HH~~6677777r   c                    t          j        d          d             }t          j        dt          j                  }|d dd         }	 t           j                            |           t          d          # t          $ r Y d S w xY w)Nzvoid(double[:], double[:])c                 h    t          j        d          }|| j        d         k     r|| |<   |||<   d S d S r%   r'   )r   r:   r)   s      r   
copykernelz<TestCudaArray.test_gpu_array_interleaved.<locals>.copykernel0   s;    	!A171:~~!! ~r   r+   r,      zDShould raise exception complaining the contiguous-ness of the array.)	r   r3   r   r   r4   devicearrayauto_deviceAssertionError
ValueError)r   r?   r   r:   s       r   test_gpu_array_interleavedz(TestCudaArray.test_gpu_array_interleaved.   s    	.	/	/	 	 
0	/	 Ib	***er!eH	B((+++ ! "A B B B  	 	 	DD	s   
A8 8
BBc                     t           j                            d          \  }}|                     t	          j        |                                t	          j        d          k                         d S )NrA   )r   rB   rC   r6   r   allr   array)r   d_s      r   test_auto_device_constz$TestCudaArray.test_auto_device_constI   sU    ++A..1q~~//28A;;>??@@@@@r   c                     ||          }|                      |j        |j                   |                      |j        |j                   |                      |j        |j                   |                      |j        d         |j        d                    |                      |j        d         |j        d                    dS )zk
        Tests of *_array_like where shape, strides, dtype, and flags should
        all be equal.
        C_CONTIGUOUSF_CONTIGUOUSN)r   r   stridesr-   flags)r   	like_funcrI   
array_likes       r   _test_array_like_samez#TestCudaArray._test_array_like_sameM   s    
 Yu%%
j&6777
(:;;;j&6777^4#).9	; 	; 	;^4#).9	; 	; 	; 	; 	;r   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nr+   CorderrR   r   r   ARRAY_LIKE_FUNCTIONSsubTestrT   r   d_arR   s      r   test_array_like_1dz TestCudaArray.test_array_like_1d[       #...- 	; 	;I	22 ; ;**9c:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	;   AA	 A	c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S Nr+      rV   rW   rY   rZ   r]   s      r   test_array_like_2dz TestCudaArray.test_array_like_2da       444- 	; 	;I	22 ; ;**9c:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	;ra   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S rc   rZ   r]   s      r   test_array_like_2d_transposez*TestCudaArray.test_array_like_2d_transposeg   rg   ra   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nr+   re      rV   rW   rY   rZ   r]   s      r   test_array_like_3dz TestCudaArray.test_array_like_3dm       C888- 	; 	;I	22 ; ;**9c:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	;ra   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nr+   FrW   rY   rZ   r]   s      r   test_array_like_1d_fz"TestCudaArray.test_array_like_1d_fs   r`   ra   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S Nrd   rp   rW   rY   rZ   r]   s      r   test_array_like_2d_fz"TestCudaArray.test_array_like_2d_fy   rg   ra   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S rs   rZ   r]   s      r   test_array_like_2d_f_transposez,TestCudaArray.test_array_like_2d_f_transpose   rg   ra   c                     t          j        dd          }t          D ]F}|                     |          5  |                     ||           d d d            n# 1 swxY w Y   Gd S )Nrk   rp   rW   rY   rZ   r]   s      r   test_array_like_3d_fz"TestCudaArray.test_array_like_3d_f   rn   ra   c                     ||          }|                      |j        |j                   |                      |j        |j                   t          j        |          }|                      |j        |j                   |                      |j        d         |j        d                    |                      |j        d         |j        d                    dS )z
        Tests of device_array_like where the original array is a view - the
        strides should not be equal because a contiguous array is expected.
        rN   rO   N)r   r   r-   r   
zeros_likerP   rQ   )r   rR   viewd_viewnb_likenp_likes         r   _test_array_like_viewz#TestCudaArray._test_array_like_view   s    
 )F##w}555w}555 -%%'/:::~6 ~6	8 	8 	8~6 ~6	8 	8 	8 	8 	8r   c                    d}t          j        |          d d d         }t          j        |          d d d         }t          D ]G}|                     |          5  |                     |||           d d d            n# 1 swxY w Y   Hd S )Nr+   rA   rY   r   zerosr   r   r[   r\   r   r   r   r{   r|   rR   s        r   test_array_like_1d_viewz%TestCudaArray.test_array_like_1d_view   s    xsss#"5))##A#.- 	D 	DI	22 D D**9dFCCCD D D D D D D D D D D D D D D	D 	Ds   B  B	B	c                 $   d}t          j        |d          d d d         }t          j        |d          d d d         }t          D ]G}|                     |          5  |                     |||           d d d            n# 1 swxY w Y   Hd S )Nr+   rp   rW   rA   rY   r   r   s        r   test_array_like_1d_view_fz'TestCudaArray.test_array_like_1d_view_f   s    xS)))##A#."5444SSqS9- 	D 	DI	22 D D**9dFCCCD D D D D D D D D D D D D D D	D 	Ds    BB	B	c                 0   d}t          j        |          d d dd d df         }t          j        |          d d dd d df         }t          D ]G}|                     |          5  |                     |||           d d d            n# 1 swxY w Y   Hd S )Nrd   rA   rY   r   r   s        r   test_array_like_2d_viewz%TestCudaArray.test_array_like_2d_view   s    xsssCCaCx("5))##A#sss(3- 	D 	DI	22 D D**9dFCCCD D D D D D D D D D D D D D D	D 	Ds   &B

B	B	c                 8   d}t          j        |d          d d dd d df         }t          j        |d          d d dd d df         }t          D ]G}|                     |          5  |                     |||           d d d            n# 1 swxY w Y   Hd S Nrd   rp   rW   rA   rY   r   r   s        r   test_array_like_2d_view_fz'TestCudaArray.test_array_like_2d_view_f   s
   xS)))##A#sss(3"5444SSqS##A#X>- 	D 	DI	22 D D**9dFCCCD D D D D D D D D D D D D D D	D 	Ds   *BB	B	z5Numba and NumPy stride semantics differ for transposec                    d}t          j        |          d d dd d df         j        }t          D ]}|                     |          5   ||          }|                     |j        |j                   |                     |j        |j                   |                     d|j                   | 	                    |j
        d                    |                     |j
        d                    d d d            n# 1 swxY w Y   d S )Nrd   rA   rY   )(      rN   rO   )r   r   Tr[   r\   r   r   r-   rP   r6   rQ   assertFalse)r   r   r|   rR   likes        r   (test_array_like_2d_view_transpose_devicez6TestCudaArray.test_array_like_2d_view_transpose_device   sC   "5))##A#sss(35- 	= 	=I	22 
= 
=
 !y((  tz:::  tz:::  $,777
> :;;;  N!;<<<
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
= 
=	= 	=s   	B'C<<D 	D 	c                    d}t          j        |          d d dd d df         j        }t          j        |          d d dd d df         j        }t
          D ]}|                     |          5  t          j        |          } ||          }|                     |j	        |j	                   |                     |j
        |j
                   |                     |j        |j                   |                     |j        d         |j        d                    |                     |j        d         |j        d                    d d d            n# 1 swxY w Y   
d S )Nrd   rA   rY   rN   rO   )r   r   r   r   r   r[   r\   rz   r   r   r-   rP   rQ   )r   r   r{   r|   rR   r~   r}   s          r   +test_array_like_2d_view_transpose_simulatorz9TestCudaArray.test_array_like_2d_view_transpose_simulator   s    xsssCCaCx(*"5))##A#sss(35- 	@ 	@I	22 @ @ ---#)F++  w}===  w}===  '/BBB  ~!>!(~!>@ @ @  ~!>!(~!>@ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@s   1CEE	E	c                 L   d}t          j        |d          d d dd d df         j        }t          j        |d          d d dd d df         j        }t
          D ]G}|                     |          5  |                     |||           d d d            n# 1 swxY w Y   Hd S r   )r   r   r   r   r   r[   r\   r   r   s        r   #test_array_like_2d_view_f_transposez1TestCudaArray.test_array_like_2d_view_f_transpose   s   xS)))##A#sss(35"5444SSqS##A#X>@- 	D 	DI	22 D D**9dFCCCD D D D D D D D D D D D D D D	D 	Ds   4BB	B	z-Kernel overloads not created in the simulatorc                 H   t           j        d             }d}t          j        |f          }t          j        |          }t          j        |f          } |d         ||            |d         ||           |                     dt          |j                             d S )Nc                 J    t          j        d          }| |         dz  ||<   d S )Nr&   rA   )r   r(   )Aoutr)   s      r   funcz+TestCudaArray.test_issue_4628.<locals>.func   s$    	!AqTAXCFFFr      )r&   r   r&   )	r   r3   r   onesr   r   r   len	overloads)r   r   nar^   results         r   test_issue_4628zTestCudaArray.test_issue_4628   s     
	 	 
	 GQDMMnQ1$VQVS&!!!C//00000r   N)__name__
__module____qualname__r   r"   r<   rF   rL   rT   r_   rf   ri   rm   rq   rt   rv   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
      s       * * *- - -8 8 8B B B6A A A; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;8 8 8"D D DD D DD D DD D D _LMM= = NM=   % & &@ @& &@&D D D _DEE1 1 FE1 1 1r   r
   __main__)numpyr   numba.cuda.testingr   r   r   r   numbar   r   ENABLE_CUDASIMr   pinned_array_liker[   mapped_array_liker
   r   mainr   r   r   <module>r      s        5 5 5 5 5 5 5 5 C C C C C C C C         
 4 2D4JK 2D4J 24q1 q1 q1 q1 q1L q1 q1 q1h zHMOOOOO r   