
    sh)                        S SK rS SKJrJr  S SKJrJr  S SKJrJ	r	  \R                  (       a  \	R                  \	R                  4rO#\	R                  \	R                  \	R                  4r " S S\5      r\S:X  a  \R"                  " 5         gg)    N)unittestCUDATestCase)skip_on_cudasimskip_unless_cudasim)configcudac                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS r\" S5      S 5       r\" S5      S 5       rS r\" S5      S 5       rSrg)TestCudaArray   c                    [         R                  " S5      n[        R                  " U5      nUR	                  5       nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        g )Nr   )nparanger   	to_devicecopy_to_hostassertEqualshapesize)selfxdxhxs       v/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_array.pytest_gpu_array_zero_length(TestCudaArray.test_gpu_array_zero_length   s    IIaL^^A__"((+)"((+)    c                     Sn[         R                  " S5      R                  n[         R                  " [        R
                  " S5      5      R                  nU R                  X!5        U R                  X15        g )N )r   device_arrayr   device_array_liker   ndarrayr   )r   
null_shapeshape1shape2s       r   test_null_shapeTestCudaArray.test_null_shape   sW    
""2&,,''

27==,,r   c           
         [         R                  " S5      S 5       n[        R                  " S[        R                  S9n[        R
                  " SU[        R                  S9n[        R
                  " SUSS	 [        R                  S
9nUS   " U5        U R                  [        R                  " U[        [        S5      5      5      5        g )Nzvoid(double[:])c                 ^    [         R                  " S5      nXR                  S   :  a  XU'   g g N   r   r   gridr   )r   is     r   kernel4TestCudaArray.test_gpu_array_strided.<locals>.kernel"   s(    		!A771:~! r   
   dtypeP   )r   bufferr1   	      )r3   r1   )r/   r/   )r   jitr   r   doubler    byte
assertTrueallcloselistrange)r   r-   r   yzs        r   test_gpu_array_strided$TestCudaArray.test_gpu_array_strided    s    	#	$	 
%	
 IIb		*JJVARWW=JJq1R		:vqAtE!H~67r   c                    [         R                  " S5      S 5       n[        R                  " S[        R                  S9nUS SS2   n [         R
                  R                  U5        [        S5      e! [         a     g f = f)Nzvoid(double[:], double[:])c                 f    [         R                  " S5      nX R                  S   :  a	  X U'   X!U'   g g r(   r*   )r   r>   r,   s      r   
copykernel<TestCudaArray.test_gpu_array_interleaved.<locals>.copykernel0   s/    		!A771:~!! r   r/   r0      zDShould raise exception complaining the contiguous-ness of the array.)	r   r7   r   r   r8   devicearrayauto_deviceAssertionError
ValueError)r   rD   r   r>   s       r   test_gpu_array_interleaved(TestCudaArray.test_gpu_array_interleaved.   s    	.	/	 
0	 IIb		*er!eH	B((+ ! "A B B  		s   	A3 3
B ?B c                     [         R                  R                  S5      u  pU R                  [        R
                  " UR                  5       [        R                  " S5      :H  5      5        g )NrG   )r   rH   rI   r:   r   allr   array)r   d_s      r   test_auto_device_const$TestCudaArray.test_auto_device_constI   sC    ++A.q~~/288A;>?@r   c                    U" U5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  S   UR                  S   5        U R                  UR                  S   UR                  S   5        g)zS
Tests of *_array_like where shape, strides, dtype, and flags should
all be equal.
C_CONTIGUOUSF_CONTIGUOUSN)r   r   stridesr1   flags)r   	like_funcrP   
array_likes       r   _test_array_like_same#TestCudaArray._test_array_like_sameM   s    
 u%
j&6&67
(:(:;j&6&67^4#)).9	;^4#)).9	;r   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = f)Nr/   CorderrZ   r   r   ARRAY_LIKE_FUNCTIONSsubTestr\   r   d_arZ   s      r   test_array_like_1d TestCudaArray.test_array_like_1d[   I    #.-I	2**9: 32 .22   A
A	c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = fNr/      r_   r`   rb   rc   rf   s      r   test_array_like_2d TestCudaArray.test_array_like_2da   I    4-I	2**9: 32 .22rk   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = frm   rc   rf   s      r   test_array_like_2d_transpose*TestCudaArray.test_array_like_2d_transposeg   rr   rk   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = f)Nr/   ro      r_   r`   rb   rc   rf   s      r   test_array_like_3d TestCudaArray.test_array_like_3dm   I    C8-I	2**9: 32 .22rk   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = f)Nr/   Fr`   rb   rc   rf   s      r   test_array_like_1d_f"TestCudaArray.test_array_like_1d_fs   rj   rk   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = fNrn   r}   r`   rb   rc   rf   s      r   test_array_like_2d_f"TestCudaArray.test_array_like_2d_fy   rr   rk   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = fr   rc   rf   s      r   test_array_like_2d_f_transpose,TestCudaArray.test_array_like_2d_f_transpose   rr   rk   c                     [         R                  " SSS9n[         H,  nU R                  US9   U R	                  X!5        S S S 5        M.     g ! , (       d  f       M@  = f)Nrw   r}   r`   rb   rc   rf   s      r   test_array_like_3d_f"TestCudaArray.test_array_like_3d_f   r{   rk   c                    U" U5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        [        R                  " U5      nU R                  UR
                  UR
                  5        U R                  UR                  S   UR                  S   5        U R                  UR                  S   UR                  S   5        g)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.
rV   rW   N)r   r   r1   r   
zeros_likerX   rY   )r   rZ   viewd_viewnb_likenp_likes         r   _test_array_like_view#TestCudaArray._test_array_like_view   s    
 F#w}}5w}}5 --%'//:~6 ~6	8~6 ~6	8r   c                 
   Sn[         R                  " U5      S S S2   n[        R                  " U5      S S S2   n[         H-  nU R                  US9   U R                  XBU5        S S S 5        M/     g ! , (       d  f       MA  = f)Nr/   rG   rb   r   zerosr   r   rd   re   r   r   r   r   r   rZ   s        r   test_array_like_1d_view%TestCudaArray.test_array_like_1d_view   sm    xxss#""5)#A#.-I	2**9FC 32 .22s   A33
B	c                    Sn[         R                  " USS9S S S2   n[        R                  " USS9S S S2   n[         H-  nU R                  US9   U R                  XBU5        S S S 5        M/     g ! , (       d  f       MA  = f)Nr/   r}   r`   rG   rb   r   r   s        r   test_array_like_1d_view_f'TestCudaArray.test_array_like_1d_view_f   sr    xxS)#A#.""54SqS9-I	2**9FC 32 .22s   A11
B 	c                    Sn[         R                  " U5      S S S2S S S24   n[        R                  " U5      S S S2S S S24   n[         H-  nU R                  US9   U R                  XBU5        S S S 5        M/     g ! , (       d  f       MA  = f)Nrn   rG   rb   r   r   s        r   test_array_like_2d_view%TestCudaArray.test_array_like_2d_view   s}    xxssCaCx(""5)#A#ss(3-I	2**9FC 32 .22s   A==
B	c                    Sn[         R                  " USS9S S S2S S S24   n[        R                  " USS9S S S2S S S24   n[         H-  nU R                  US9   U R                  XBU5        S S S 5        M/     g ! , (       d  f       MA  = fNrn   r}   r`   rG   rb   r   r   s        r   test_array_like_2d_view_f'TestCudaArray.test_array_like_2d_view_f   s    xxS)#A#ss(3""54SqS#A#X>-I	2**9FC 32 .22s   A;;
B
	z5Numba and NumPy stride semantics differ for transposec                 $   Sn[         R                  " U5      S S S2S S S24   R                  n[         H  nU R	                  US9   U" U5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  SUR                  5        U R                  UR                  S   5        U R                  UR                  S   5        S S S 5        M     g ! , (       d  f       M  = f)Nrn   rG   rb   )(      rV   rW   )r   r   Trd   re   r   r   r1   rX   r:   rY   assertFalse)r   r   r   rZ   likes        r   (test_array_like_2d_view_transpose_device6TestCudaArray.test_array_like_2d_view_transpose_device   s    ""5)#A#ss(355-I	2
 !(  tzz:  tzz:  $,,7

> :;  N!;< 32 .22s   B-D  
D	c                    Sn[         R                  " U5      S S S2S S S24   R                  n[        R                  " U5      S S S2S S S24   R                  n[
         GH  nU R                  US9   [         R                  " U5      nU" U5      nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  S   UR                  S   5        U R                  UR                  S   UR                  S   5        S S S 5        GM     g ! , (       d  f       GM  = f)Nrn   rG   rb   rV   rW   )r   r   r   r   r   rd   re   r   r   r   r1   rX   rY   )r   r   r   r   rZ   r   r   s          r   +test_array_like_2d_view_transpose_simulator9TestCudaArray.test_array_like_2d_view_transpose_simulator   s,    xxssCaCx(**""5)#A#ss(355--I	2 ---#F+  w}}=  w}}=  '//B  ~!>!(~!>@  ~!>!(~!>@ 32 .22s   2C)E))
E9	c                 B   Sn[         R                  " USS9S S S2S S S24   R                  n[        R                  " USS9S S S2S S S24   R                  n[
         H-  nU R                  US9   U R                  XBU5        S S S 5        M/     g ! , (       d  f       MA  = fr   )r   r   r   r   r   rd   re   r   r   s        r   #test_array_like_2d_view_f_transpose1TestCudaArray.test_array_like_2d_view_f_transpose   s    xxS)#A#ss(355""54SqS#A#X>@@-I	2**9FC 32 .22s   /B
B	z-Kernel overloads not created in the simulatorc                 2   [         R                  S 5       nSn[        R                  " U45      n[         R                  " U5      n[        R
                  " U45      nUS   " X55        US   " XE5        U R                  S[        UR                  5      5        g )Nc                 B    [         R                  " S5      nX   S-  X'   g )Nr)   rG   )r   r+   )Aoutr,   s      r   func+TestCudaArray.test_issue_4628.<locals>.func   s    		!ATAXCFr      )r)   r   r)   )	r   r7   r   onesr   r   r   len	overloads)r   r   narg   results         r   test_issue_4628TestCudaArray.test_issue_4628   s~     
	 
	 GGQDMnnQ1$VQVS!C/0r   r   N)__name__
__module____qualname____firstlineno__r   r$   r@   rL   rS   r\   rh   rp   rt   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r
   r
      s    *-8B6A;;;;;;;;;8"DDDD LM= N=   % &@&@&D DE1 F1r   r
   __main__)numpyr   numba.cuda.testingr   r   r   r   numbar   r   ENABLE_CUDASIMr   pinned_array_likerd   mapped_array_liker
   r   mainr   r   r   <module>r      s|     5 C  
 22D4J4JK 22D4J4J 224q1L q1h zMMO r   