
    sh^
                         S SK r S SKJrJr  S SKJr  \\" S5       " S S\5      5       5       r\S:X  a  \ R                  " 5         gg)    N)CUDATestCaseskip_on_cudasim)skip_unless_cffiz4cudasim doesn't support cuda import at non-top-levelc                        \ rS rSrS rS rSrg)TestFFI	   c                   ^
^ SSK Jm
  SS KnSS KnT
R	                  SS5      mUR
                  R                  UR
                  R                  [        5      5      nUR
                  R                  USS5      nT
R                  U/S9U
U4S j5       nS	nUR                  R                  S
5        UR                  R                  U5      R                  UR                  5      nUR                  R                  U5      R                  UR                  5      nUR!                  U5      n	US   " XU5        UR"                  R%                  XU-  5        g )Nr   cudamul_f32_f32zfloat32(float32, float32)ffifunctions.culinkc                 f   > TR                  S5      nU[        U 5      :  a  T" X   X#   5      X'   g g )N   )gridlen)rxyir   muls       z/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/doc_examples/test_ffi.pymultiply_vectors4TestFFI.test_ex_linking_cu.<locals>.multiply_vectors   s1    		!A3q6z14         r   )r   r   )numbar   numpyosdeclare_devicepathdirnameabspath__file__joinjitrandomseedrandastypefloat32
zeros_liketestingassert_array_equal)selfnpr!   basedirfunctions_cur   Nr   r   r   r   r   s             @@r   test_ex_linking_cuTestFFI.test_ex_linking_cu   s	    !!-1LM ''//"''//(";<ww||GUNC 
~	&	' 
'	' 
		qIINN1$$RZZ0IINN1$$RZZ0MM! 	a( 	

%%aQ/r   c                 R  ^^ SSK Jn  SS KnUR                  R	                  UR                  R                  [        5      5      nUR                  R                  USS5      nSnUR                  SU5      mSS K	nUR                  5       mUR                  U/S9UU4S j5       nSS KnUR                  S	5      R                  UR                  5      n	UR!                  S
UR                  S9n
US   " X5        UR#                  U	5      nU
S
   nUR$                  R'                  X5        g )Nr   r
   r   r   z!float32(CPointer(float32), int32)
sum_reducer   c                 R   > TR                  U5      nT" U[        U5      5      U S'   g )N )from_bufferr   )resultarray	array_ptrr   r9   s      r   reduction_caller5TestFFI.test_ex_from_buffer.<locals>.reduction_caller@   s%    .I#Is5z:F2Jr   
   r;   )dtype)r   r   )r   r   r!   r#   r$   r%   r&   r'   r"   cffiFFIr(   r    aranger,   r-   ndarraysumr/   assert_allclose)r1   r   r!   r3   r4   	signaturerD   r@   r2   r   r   expectedactualr   r9   s                @@r   test_ex_from_bufferTestFFI.test_ex_from_buffer0   s    ''//"''//(";<ww||GUNC 8	((yA
 	hhj	~	&	; 
'	;
 	IIbM  ,JJrJ,q$66!92


""84r   r;   N)__name__
__module____qualname____firstlineno__r6   rM   __static_attributes__r;   r   r   r   r   	   s    !0H5r   r   __main__)	unittestnumba.cuda.testingr   r   numba.tests.supportr   r   rO   mainr;   r   r   <module>rY      sV     > 0 GHC5l C5 I C5L zMMO r   