
    `i                         d Z ddlZddlmZmZ ddlmZmZ ddl	Z	 ed           G d de                      Z
edk    r e	j                     dS dS )	zExample: sum each row using guvectorize

See Numpy documentation for detail about gufunc:
    http://docs.scipy.org/doc/numpy/reference/c-api.generalized-ufuncs.html
    N)guvectorizecuda)skip_on_cudasimCUDATestCasez&ufunc API unsupported in the simulatorc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestGUFuncScalarc                     t          dgdd          d             }t          j        dt          j                                      dd	          }t          j        d|j                  }t          j        d|j                  }t          j        |          }t          j        |d
          } |||            ||          }|	                    |           |	                    |           t          |j        d                   D ]p}|                     ||         ||                                         k               |                     ||         ||                                         k               qd S )Nzvoid(int32[:], int32[:])z(n)->()r   targetc                 d    d}t          | j        d                   D ]}|| |         z  }||d<   d S )Ng        r   rangeshape)inpouttmpis       ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_gufunc_scalar.pysum_rowz;TestGUFuncScalar.test_gufunc_scalar_output.<locals>.sum_row   s@    C39Q<((  s1vCFFF    i,  dtyped      F)copyr   r   )r   nparangeint32reshapeemptyr   r   	to_devicecopy_to_hostr   r   
assertTruesum)	selfr   r   out1out2dev_inpdev_out1dev_out2r   s	            r   test_gufunc_scalar_outputz*TestGUFuncScalar.test_gufunc_scalar_output   sv    
019V	L	L	L	 	 
M	L	 i28,,,44S!<< x39---x39---. >$U333X&&&&77##d###d### sy|$$ 	5 	5AOODGs1vzz||3444OODGs1vzz||34444	5 	5r   c                 "   t          dgdd          d             }|                      |d          d           t          j        d                              t          j                  }|                      ||          |dz             d S )	Nzvoid(int32, int32[:])z()->()r   r
   c                     | dz  |d<   d S )N   r    )r   r   s     r   twicez=TestGUFuncScalar.test_gufunc_scalar_output_bug.<locals>.twice:   s    1WCFFFr   
      r/   )r   assertEqualr   r   astyper   assertPreciseEqual)r&   r1   args      r   test_gufunc_scalar_output_bugz.TestGUFuncScalar.test_gufunc_scalar_output_bug8   s    	-.	H	H	H	 	 
I	H	 	rB'''imm""28,,c

C!G44444r   c           	      F   t          dgdd          d             }t          j        d          }t          j        dt          j                                      d	d          }t          j        dt          j                                      d	d          } ||||          }t          d	          D ]M}t          d          D ];}||||f         z  |||f         z   }|                     ||||f         k               <Nt          j        dt          j                  }t          j        dt          j                  } ||||          }t          d          D ]>}|||         z  ||         z   }|                     |||         k    |||         f           ?t          j        d	t          j                  }t          j        dt          j                                      d	d          }t          j        dt          j                                      d	d          } ||||          }t          d	          D ]^}t          d          D ]L}||         |||f         z  |||f         z   }|                     ||||f         k    ||||f         f           M_d S )
Nz1void(float32, float32[:], float32[:], float32[:])z(),(t),(t)->(t)r   r
   c                 n    t          |j        d                   D ]}| ||         z  ||         z   ||<   d S Nr   r   )axyr   r   s        r   saxpyz>TestGUFuncScalar.test_gufunc_scalar_input_saxpy.<locals>.saxpyC   sF     39Q<(( ) )QqTAaDA) )r   r/   r2   r      )r   r   float32r   r    r   r$   )	r&   r?   AXYr   jr   exps	            r   test_gufunc_scalar_input_saxpyz/TestGUFuncScalar.test_gufunc_scalar_input_saxpyB   s   	IJ&v
7 
7 
7	) 	)
7 
7	) JqMMIb
+++33Aq99Ib
+++33Aq99eAq!nnq 	2 	2A1XX 2 2!AqD'kAadG+s1a4y 011112 Ib
+++Ib
+++eAq!nnr 	: 	:Aad(QqT/COOC3q6MCQ=9999Iarz***Ib
+++33Aq99Ib
+++33Aq99eAq!nnq 	D 	DA1XX D DdQq!tWnqAw.s1a4y 03AqD	2BCCCCD	D 	Dr   c                    t          dgdd          d             }t          j        d          }t          j        d                              t          j                  } |||          }t          j                            |||z             t          j        |          }t          j
        |          }|                     |j        t          j                   |                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     dt!          |j                             d S )	Nzvoid(int32, int32[:], int32[:])z(),(t)->(t)r   r
   c                 P    t          |j                  D ]}| ||         z  ||<   d S )N)r   size)r<   br   r   s       r   fooz5TestGUFuncScalar.test_gufunc_scalar_cast.<locals>.foof   s8     16]] " "QqTA" "r   r/   r2   zdoes not support .astype())r   r   int64r   r5   r   testingassert_equalarrayr   r"   r4   r   assertRaises	TypeErrorassertInstr	exception)r&   rL   r<   rK   r   daraisess          r   test_gufunc_scalar_castz(TestGUFuncScalar.test_gufunc_scalar_caste   sd   	78-"
$ 
$ 
$	" 	"
$ 
$	" HQKKIbMM  **c!Qii

QU+++ HQKK^A28,,,y)) 	VCAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2C8H4I4IJJJJJs   8DDDc                 Z   t          dgdd          d             }t          j        g dt          j                  }t          j        dgt          j                  }t          j        d	t          j                  }|                                }||z   } ||||
           t          j                            ||           t          j        g ddz  t          j                                      dd	          }t          j        ddgt          j                  }t          j        dt          j                  }|                                }|d         |d         z   |d<   |d         |d         z   |d<    ||||           t          j                            ||           d S )Nz void(int32[:],int32[:],int32[:])z(n),()->(n)r   r
   c                 h    t          | j        d                   D ]}| |         |d         z   ||<   d S r;   r   )r=   r>   resr   s       r   gufunczFTestGUFuncScalar.test_gufunc_old_style_scalar_as_array.<locals>.gufunc|   sB     171:&& % %1!A% %r   )   r/   r      r   r/   r^   r   r2   )r/   r^   r   r]   )	r   r   rP   r   zerosr   rN   assert_almost_equalr    )r&   r\   r<   rK   r[   expecteds         r   %test_gufunc_old_style_scalar_as_arrayz6TestGUFuncScalar.test_gufunc_old_style_scalar_as_arrayz   s   	89="
$ 
$ 
$	% 	%
$ 
$	%
 H\\\222HaS)))hq)))88::q5q!

&&x555 H\\\A%RX666>>q!DDHaWBH---hvRX...88::dQqTkdQqTkq!S

&&x55555r   N)__name__
__module____qualname__r,   r8   rG   rX   rb   r0   r   r   r   r      sg        (5 (5 (5T5 5 5!D !D !DFK K K*!6 !6 !6 !6 !6r   r   __main__)__doc__numpyr   numbar   r   numba.cuda.testingr   r   unittestr   rc   mainr0   r   r   <module>rm      s    
     # # # # # # # # < < < < < < < <  9::N6 N6 N6 N6 N6| N6 N6 ;:N6b zHMOOOOO r   