
    `ik                         d dl Z d dlZd dlmZ d dlmZmZ d dlmc m	Z	 d dl
Z
 G d de          Zedk    r e
j                     dS dS )    N)cuda)CUDATestCaseskip_unless_cudasimc                   H    e Zd Zd Zd Zd Z ed          d             ZdS )TestCudaSimIssuesc                    dt           j        fdt           j        dfg}dt           j        dfdt           j        dfd|fg}t          j        |d	
          }t          j        d             }t          j        d|          } |d         |d                    t           j                            |d         d         d         d           t           j                            |d         d         d         d         d           d S )Nstatue	newspaper)   garden)   town)*   backyardT)alignc                 |    d| j         d<   d| j        j        d<   | j        j        d         dz   | j        j        d<   d S )Ng     F@r   g       @   g      @)r   r   r
   fs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/cuda/tests/cudasim/test_cudasim_issues.pysimple_kernelz;TestCudaSimIssues.test_record_access.<locals>.simple_kernel   s@    AHQK&)AJ #&'j&:1&=&CAJ ###       dtyper   r   r   -   r      )npfloat64r   r   jitrecarraytestingassert_equal)selfbackyard_type
goose_typegoose_np_typer   items         r   test_record_accessz$TestCudaSimIssues.test_record_access   s   "BJ/%rz48:  U3rz51!=13
 4888		D 	D 
	D
 {1M222dDG$$$

Q 1! 4b999

Q
 3K @ CQGGGGGr   c                 b   t          j        dt           j        fdt           j        dfg          }t          j        d|          }d|d         d<   t
          j        d             } |d	         |           t           j                            |d         d         |d
         d                    d S )Nij)r      r.   r   r   r   c                     | d         | d<   d S )Nr   r    r   s    r   r   z>TestCudaSimIssues.test_recarray_setting.<locals>.simple_kernel'   s    Q4AaDDDr   r   r   )	r   r   int32float32r"   r   r!   r#   r$   )r%   recordwith2darrayrecr   s       r   test_recarray_settingz'TestCudaSimIssues.test_recarray_setting!   s    HsBHo'*BJ&?&A B Bk!#4555As		 	 
	dC   

AsSVC[99999r   c                 <   ddl m} |j        t          j        fd            }t          j        dt
          j                  } |d         |           t          j        |j	        t
          j                  }t
          j
                            ||           dS )z
        Discovered in https://github.com/numba/numba/issues/1837.
        When the `cuda` module is referenced in a device function,
        it does not have the kernel API (e.g. cuda.threadIdx, cuda.shared)
        r   )supportc                 @                 }|| j         k     r|| |<   d S d S )N)size)outtidinners     r   outerzDTestCudaSimIssues.test_cuda_module_in_device_function.<locals>.outer7   s-    %''CSX~~C ~r   
   r   )r      N)numba.cuda.tests.cudasimr7   cuda_module_in_device_functionr   r!   r   zerosr1   aranger9   r#   r$   )r%   r7   r=   arrexpectedr<   s        @r   #test_cuda_module_in_device_functionz5TestCudaSimIssues.test_cuda_module_in_device_function-   s     	5444446		 	 	 	 
	
 hr***eS9SXRX666

#.....r   zOnly works on CUDASIMc                      fd}t           j        d             }t          j        d          }t          j        d          } |d         ||           t          j                            ||            |                                  t                    5   |d         ||           d d d            n# 1 swxY w Y    |             d S )Nc                  &   g } t          j                    D ]c}t          |t          j        j                  s"|                    d           |                                r                    d|z             d	                    | g            d S )Nr   zBlocked kernel thread: %s)
	threading	enumerate
isinstance	simulatorkernelBlockThreadjoinis_alivefailassertListEqual)blockthreadstr%   s     r   assert_no_blockthreadszLTestCudaSimIssues.test_deadlock_on_exception.<locals>.assert_no_blockthreadsD   s    L(** ? ?!!Y%5%ABB  q			::<< ?II9A=>>>  r22222r   c                     t          j        d          }| |         ||<   t          j                     t          j                     d S )Nr   )r   gridsyncthreads)xyr,   s      r   assign_with_synczFTestCudaSimIssues.test_deadlock_on_exception.<locals>.assign_with_syncR   s@    	!AQ4AaDr   r   )r   r   )r   r   )	rL   r!   r   rC   emptyr#   assert_array_equalassertRaises
IndexError)r%   rU   r[   rY   rZ   s   `    r   test_deadlock_on_exceptionz,TestCudaSimIssues.test_deadlock_on_exceptionB   s*   	3 	3 	3 	3 	3 
	 	 
	 IaLLHQKKq!$$$

%%a+++   z** 	) 	)"T"1a(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)     s   B99B= B=N)__name__
__module____qualname__r*   r5   rF   r   r`   r0   r   r   r   r      sl        H H H*
: 
: 
:/ / /* 011! ! 21! ! !r   r   __main__)rI   numpyr   numbar   numba.cuda.testingr   r   numba.cuda.simulatorrL   unittestr   ra   mainr0   r   r   <module>rk      s                  @ @ @ @ @ @ @ @ ( ( ( ( ( ( ( ( ( W! W! W! W! W! W! W! W!t zHMOOOOO r   