
    `i^
                         d dl Z d dlmZmZ d dlmZ e ed           G d de                                  Zedk    r e j                     dS dS )    N)CUDATestCaseskip_on_cudasim)skip_unless_cffiz4cudasim doesn't support cuda import at non-top-levelc                       e Zd Zd Zd ZdS )TestFFIc                   
 ddl m
 dd l}dd l}
                    dd          |j                            |j                            t                              }|j        	                    |dd          }

                    |g          
fd            }d	}|j                            d
           |j                            |                              |j                  }|j                            |                              |j                  }|                    |          }	 |d         |	||           |j                            |	||z             d S )Nr   cudamul_f32_f32zfloat32(float32, float32)ffifunctions.culinkc                                          d          }|t          |           k     r ||         ||                   | |<   d S d S )N   )gridlen)rxyir
   muls       z/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/cuda/tests/doc_examples/test_ffi.pymultiply_vectorsz4TestFFI.test_ex_linking_cu.<locals>.multiply_vectors   sG    		!A3q66zzs1Q41! z        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_cuzTestFFI.test_ex_linking_cu   sj   			 !!-1LMM '//"'//(";";<<w||GUNCC 
~	&	&	' 	' 	' 	' 	' 
'	&	' 
	qINN1$$RZ00INN1$$RZ00MM! 	 1a((( 	
%%aQ/////r   c                    ddl m} dd l}|j                            |j                            t                              }|j                            |dd          }d}|                    d|          dd l	}|
                                |                    |g          fd            }dd l}|                    d	                              |j                  }	|                    d
|j                  }
 |d         |
|	           |                    |	          }|
d
         }|j                            ||           d S )Nr   r	   r   r   z!float32(CPointer(float32), int32)
sum_reducer   c                 j                         |          } |t          |                    | d<   d S )N )from_bufferr   )resultarray	array_ptrr   r6   s      r   reduction_callerz5TestFFI.test_ex_from_buffer.<locals>.reduction_caller@   s3    ..I#Is5zz::F2JJJr   
   r8   )dtype)r   r   )r   r
   r   r!   r"   r#   r$   r%   r    cffiFFIr&   r   aranger*   r+   ndarraysumr-   assert_allclose)r/   r
   r   r1   r2   	signaturer@   r=   r0   r   r   expectedactualr   r6   s                @@r   test_ex_from_bufferzTestFFI.test_ex_from_buffer0   sV   			'//"'//(";";<<w||GUNCC 8	((yAA
 	hhjj	~	&	&	; 	; 	; 	; 	; 
'	&	;
 	IIbMM  ,,JJrJ,,q!$$$66!992

""8V44444r   N)__name__
__module____qualname__r4   rI   r8   r   r   r   r   	   s3        !0 !0 !0H5 5 5 5 5r   r   __main__)	unittestnumba.cuda.testingr   r   numba.tests.supportr   r   rJ   mainr8   r   r   <module>rR      s     > > > > > > > > 0 0 0 0 0 0 GHHC5 C5 C5 C5 C5l C5 C5 IH C5L zHMOOOOO r   