
    wgs                     x    d dl Zd dlmZ d dlmZ d dlmZmZ  G d de      Z	e
dk(  r ej                          yy)    N)
namedtuple)cuda)unittestCUDATestCasec                   N    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y)TestCudaArrayArgc                 V   t        j                  ddd      d        t        j                  d      fd       }t        j                  dt        j                        }t        j
                  |      } |d	   ||       | j                  t        j                  ||k(               y )
Nzdouble(double[:],int64)T)deviceinlinec                     | |   S )N )acs     l/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_array_args.pydevice_functionz8TestCudaArrayArg.test_array_ary.<locals>.device_function   s    Q4K    zvoid(double[:],double[:])c                 H    t        j                  d      } | |      ||<   y )N   )r   grid)xyir   s      r   kernelz/TestCudaArrayArg.test_array_ary.<locals>.kernel   s     		!A"1a(AaDr   
   dtype)r   r   )r   jitnparangedouble
zeros_like
assertTrueall)selfr   r   r   r   s       @r   test_array_aryzTestCudaArrayArg.test_array_ary	   s    	+D	F	 
G	 
-	.	) 
/	) IIb		*MM!uaqAv'r   c                 
   t         j                  d        }d}t        j                  t	        |      t        j
                        } |d   ||       t        t	        |            D ]  }| j                  ||   ||           y )Nc                 4    |d   | d<   |d   | d<   |d   | d<   y )Nr   r      r   rr   s     r   fz)TestCudaArrayArg.test_unituple.<locals>.f   s)    Q4AaDQ4AaDQ4AaDr   )r   r(      r   r   r   )r   r   r   zeroslenint64rangeassertEqual)r$   r+   r   r*   r   s        r   test_unituplezTestCudaArrayArg.test_unituple   su    		 
	
 HHSV288,$1s1v 	)AQqT1Q4(	)r   c           	         t         j                  d        }d}t        j                  t	        |      dz  t        j
                        }t        j                  t	        |      dz  t        j                        } |d   |||       t        t	        |            D ]  }| j                  ||   ||           t        t	        |            D ]&  }| j                  ||   ||t	        |      z             ( y )Nc                 d    |d   | d<   |d   | d<   |d   | d<   |d   |d<   |d   |d<   |d   |d<   y Nr   r   r(   r,         r   r1r2r   s      r   r+   z&TestCudaArrayArg.test_tuple.<locals>.f(   sP    aDBqEaDBqEaDBqEaDBqEaDBqEaDBqEr   )r   r(   r,   g      @g      @g      @r(   r   r-   )	r   r   r   r.   r/   r0   float64r1   r2   )r$   r+   r   r:   r;   r   s         r   
test_tuplezTestCudaArrayArg.test_tuple'   s    		 
	 %XXc!fk2XXc!fk4$Bs2w 	*ARUAaD)	* s2w 	4ARUAa#b'kN3	4r   c                 J   t         j                  d        }t        dd      } |dd      }t        j                  t        |      t        j                        } |d   ||       | j                  |d   |j                         | j                  |d   |j                         y )	Nc                 @    |j                   | d<   |j                  | d<   y Nr   r   r   r   r)   s     r   r+   z.TestCudaArrayArg.test_namedunituple.<locals>.f=   s    33AaD33AaDr   PointrA   r   r(   r   r-   r   )
r   r   r   r   r.   r/   r0   r2   r   r   )r$   r+   rB   r   r*   s        r   test_namedunituplez#TestCudaArrayArg.test_namedunituple<   s    		 
	 7J/!QKHHSV288,$11qss#1qss#r   c                    t         j                  d        }t        dd      } |ddd      }t        j                  dt        j
                        }t        j                  dt        j                        } |d   |||       | j                  |d	   |j                         | j                  |d   |j                         | j                  |d	   |j                         y )
Nc                 ^    |j                   | d<   |j                  | d<   |j                  |d<   y r@   r   r   r*   r9   s      r   r+   z+TestCudaArrayArg.test_namedtuple.<locals>.fK   s)    CCBqECCBqECCBqEr   rB   rF   r   r(   gS@r   r-   r   )r   r   r   r   r.   r0   r<   r2   r   r   r*   )r$   r+   rB   r   r:   r;   s         r   test_namedtuplez TestCudaArrayArg.test_namedtupleJ   s    		 
	
 7O4!QXXarxx(XXarzz*$BA$A$A$r   c                     t         j                  d        }t               }t        j                  dt        j
                        } |d   ||       | j                  |d   d       y )Nc                      t        |      | d<   y )Nr   r/   r)   s     r   r+   z,TestCudaArrayArg.test_empty_tuple.<locals>.f\   s    q6AaDr   r   r   r-   r   )r   r   tupler   onesr0   r2   r$   r+   r   r*   s       r   test_empty_tuplez!TestCudaArrayArg.test_empty_tuple[   sX    		 
	 GGGARXX&$11q!r   c                     t         j                  d        }d}t        j                  dt        j                        } |d   ||       | j                  |d   d       | j                  |d   d       y )	Nc                 B    t        |      | d<   t        |d         | d<   y r@   rJ   r)   s     r   r+   z6TestCudaArrayArg.test_tuple_of_empty_tuples.<locals>.fg   s     q6AaDqt9AaDr   )r   r   r   r(   r   r-   r   r,   r   r   r   r   rL   r0   r2   rM   s       r   test_tuple_of_empty_tuplesz+TestCudaArrayArg.test_tuple_of_empty_tuplesf   sj    		 
	 GGARXX&$11q!1q!r   c                    t         j                  d        }d}t        j                  dt        j                        } |d   ||       | j                  |d   d       | j                  |d   d       | j                  |d	   d	       | j                  |d   d       | j                  |d
   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d   d       y )Nc                     t        |      | d<   t        |d         | d<   t        |d         | d<   t        |d         | d<   |d   d   | d<   |d   d   | d<   |d   d   | d<   |d   d   | d<   |d   d   | d	<   y )
Nr   r   r(   r,   r7   r8            rJ   r)   s     r   r+   z0TestCudaArrayArg.test_tuple_of_tuples.<locals>.ft   s    q6AaDqt9AaDqt9AaDqt9AaDQ47AaDQ47AaDQ47AaDQ47AaDQ47AaDr   )r   )r8   rU   )rW   	   r   rX   r   r-   r   r,   r   r(   r7   r8   rU   rW   rV   r   rQ   rM   s       r   test_tuple_of_tuplesz%TestCudaArrayArg.test_tuple_of_tupless   s    			 
		 %GGARXX&$11q!1q!1q!1q!1q!1q!1q!1q!1r"r   c                    t         j                  d        }d}t        j                  dt        j                        } |d   ||       | j                  |d   d       | j                  |d   d	       | j                  |d   d
       | j                  |d	   d       | j                  |d   d       | j                  |d   d       y )Nc                     t        |      | d<   t        |d         | d<   |d   d   | d<   |d   d   | d<   |d   d   | d<   |d   | d<   y r6   rJ   r)   s     r   r+   z<TestCudaArrayArg.test_tuple_of_tuples_and_scalars.<locals>.f   s`    q6AaDqt9AaDQ47AaDQ47AaDQ47AaDQ4AaDr   ))rU   r8   r7   rV   rX   r   r-   r   r(   r   r,   rU   r8   r7   rV   rQ   rM   s       r    test_tuple_of_tuples_and_scalarsz1TestCudaArrayArg.test_tuple_of_tuples_and_scalars   s    		 
	 GGARXX&$11q!1q!1q!1q!1q!1q!r   c                     t         j                  d        }d}t        j                  |      }t        j                  |      }|dz  }|||f} |d|f   |       t        j
                  j                  |||z          y )Nc                     t        j                  d      }|t        | d         k  r| d   |   | d   |   z   | d   |<   y y )Nr   r   r(   )r   r   r/   )r   r   s     r   r+   z0TestCudaArrayArg.test_tuple_of_arrays.<locals>.f   sE    		!A3qt9}A$q'AaDG+!Q r   r   r,   r   )r   r   r   r.   	ones_liketestingassert_equal)r$   r+   Nx0x1x2r   s          r   test_tuple_of_arraysz%TestCudaArrayArg.test_tuple_of_arrays   sw    		, 
	,
 XXa[\\"!VRL!Q$



BG,r   c                    t         j                  d        }t        j                  dt        j                        }d|z  ddf}t        j
                  dt        j                        } |d   ||       | j                  |d   d       | j                  |d	   d       | j                  |d   d       | j                  |d
   d       | j                  |d   d
       y )Nc                 l    |d   d   | d<   |d   d   | d<   |d   | d<   |d   d   | d<   |d   d   | d<   y )Nr   r   r(   r,   r7   r   r)   s     r   r+   z<TestCudaArrayArg.test_tuple_of_array_scalar_tuple.<locals>.f   sS    Q47AaDQ47AaDQ4AaDQ47AaDQ47AaDr   r(   r   r   )r7   r,   r8   r-   r   r   r,   r7   )r   r   r   r   r0   r.   r2   )r$   r+   zr   r*   s        r    test_tuple_of_array_scalar_tuplez1TestCudaArrayArg.test_tuple_of_array_scalar_tuple   s    		 
	 IIarxx(UBHHQbhh'$11q!1q!1r"1q!1q!r   N)__name__
__module____qualname__r%   r3   r=   rC   rG   rN   rR   rY   r\   rf   rj   r   r   r   r   r      s9    ( )4*$%"	""#6"*- "r   r   __main__)numpyr   collectionsr   numbar   numba.cuda.testingr   r   r   rk   mainr   r   r   <module>rt      s:     "  5}"| }"@ zHMMO r   